, Мы не можем получить весь эллипс, он дает только 4 балла.

ользую Windows-universal-samples-master \ Samples \ InkAnalysis \ InkAnalysis.sln из проекта Microsoft с открытым исходным кодом. Он может анализировать фигуру, которую вы рисуете, и конвертировать в многоугольник или эллипс.

<Grid
<Canvas x:Name="canvas"/>
<InkCanvas x:Name="inkCanvas"/>
</Grid>

Все преобразованные фигуры отображаются в «canvas», а не в «inkCanvas», поэтому их нельзя сохранить как чернила.

Как добавить фигуры в «inkCanvas»?

 Tamás Deme17 окт. 2017 г., 11:12
Что именно вы спрашиваете здесь? Фигуры являются объектами фигуры, которые не являются чернильными штрихами, поэтому не могут быть добавлены в InkCanvas. Хотите изменить штрихи так, чтобы они имели форму, аналогичную приведенным выше, и сохранять их в виде чернил?
 Vincent17 окт. 2017 г., 11:55
Нет, я хочу, чтобы эти фигуры были штрихами. Следовательно, они могут быть сохранены в файл чернил. В противном случае при сохранении в файл чернил эти формы теряются ...

Ответы на вопрос(1)

InkStrokeContainer.AddStroke добавить кInkStroke Объект в коллекцию, управляемую InkStrokeContainer. Если форма многоугольника, мы можем получить точку изInkAnalysisInkDrawing.Points и установить их вInkStrokeBuilder посредствомCreateStrokeFromInkPoints метод.

Например:

private void AddPolygonToInkCanvas(InkAnalysisInkDrawing shape)
{
    var strokeBuilder = new InkStrokeBuilder();
    var strokes = inkCanvas.InkPresenter.StrokeContainer.GetStrokes();
    strokeBuilder.SetDefaultDrawingAttributes(strokes[0].DrawingAttributes);
    System.Numerics.Matrix3x2 matr = strokes[0].PointTransform;
    List<InkPoint> inkPointslist = new List<InkPoint>();
    foreach (var item in shape.Points)
    {
        var intpoint = new InkPoint(new Point(item.X, item.Y), 0.5f);
        inkPointslist.Add(intpoint);
    }
    var lastintpoint = new InkPoint(new Point(shape.Points[0].X, shape.Points[0].Y), 0.5f);
    inkPointslist.Add(lastintpoint);
    IReadOnlyList<InkPoint> inkPoints = inkPointslist;
    InkStroke stroke = strokeBuilder.CreateStrokeFromInkPoints(inkPoints, matr);  
    inkCanvas.InkPresenter.StrokeContainer.AddStroke(stroke);
}

Если форма эллипса, насколько я знаю, мы не можем добавить его кInkCanvas, Мы не можем получить весь эллипс, он дает только 4 балла.

Ваш ответ на вопрос