UWP InkCanvas用颜色填充徒手绘制的形状

时间:2017-07-03 13:57:33

标签: c# uwp inkcanvas

我目前正在开发一款UWP应用,应该允许用户在InkCanvas上绘制他想要的任何形状。这个形状的边缘会自动完成,因此没有开放空间(到目前为止,一切都运行正常)。

现在我的问题是:如何使用单一颜色(或图案)自动填充此形状?我知道有一个"多边形点"算法,但我不知道如何在UWP InkCanvas中实现它,因为我没有真正了解如何搜索形状内的点而不迭代画布上的每个点。

编辑: 我实际上是通过使用" Canvas"作为绘制折线的叠加层。通过使用Polyline.Fill()方法,它工作。但我需要对" InkCanvas"仅

1 个答案:

答案 0 :(得分:0)

  

现在我的问题是:如何使用单一颜色(或图案)自动填充此形状?我知道有一个“Point in Polygon”算法,但我不知道如何在UWP InkCanvas中实现它

您可以通过为InkStroke.DrawingAttributes设置新的InkDrawingAttributes来重绘Ink Canvas中存在的Ink笔划。

private void Button_Click(object sender, RoutedEventArgs e)
{
    InkDrawingAttributes attr = new InkDrawingAttributes();
    attr.Color = Colors.Red;
    attr.IgnorePressure = true;
    attr.PenTip = PenTipShape.Circle;
    attr.Size = new Size(4, 10);
    attr.PenTipTransform = Matrix3x2.CreateRotation((float)(70 * Math.PI / 180));
    IReadOnlyList<InkStroke> InkStrokeList = MyInk.InkPresenter.StrokeContainer.GetStrokes();
    foreach (InkStroke temp in InkStrokeList)
    {
        temp.DrawingAttributes = attr; 
    }          
}

enter image description here