Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UWP InkCanvas用颜色填充手绘形状_C#_Uwp_Inkcanvas - Fatal编程技术网

C# UWP InkCanvas用颜色填充手绘形状

C# UWP InkCanvas用颜色填充手绘形状,c#,uwp,inkcanvas,C#,Uwp,Inkcanvas,我目前正在开发一个UWP应用程序,它应该允许用户在InkCanvas上绘制他想要的任何形状。此形状的边缘会自动完成,因此没有开放空间(到目前为止,一切正常) 现在我的问题是:如何用单一颜色(或图案)自动填充此形状?我知道有一个“多边形中的点”算法,但我不知道如何在UWP InkCanvas中实现它,因为我不知道如何在不迭代画布上的每个点的情况下搜索形状中的点 编辑: 我实际上是通过使用“画布”作为覆盖来绘制多段线来完成的。通过使用Polyline.Fill()方法,它成功了。但我只需要在“Ink

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

现在我的问题是:如何用单一颜色(或图案)自动填充此形状?我知道有一个“多边形中的点”算法,但我不知道如何在UWP InkCanvas中实现它,因为我不知道如何在不迭代画布上的每个点的情况下搜索形状中的点

编辑: 我实际上是通过使用“画布”作为覆盖来绘制多段线来完成的。通过使用Polyline.Fill()方法,它成功了。但我只需要在“InkCanvas”上使用相同的效果

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

通过为设置新的
InkDrawingAttributes
,可以重新绘制墨水画布中存在的墨水笔划

private void按钮\u单击(对象发送者,路由目标)
{
InkDrawingAttributes attr=新的InkDrawingAttributes();
属性颜色=颜色。红色;
attr.IgnorePressure=真;
attr.PenTip=PenTipShape.Circle;
属性大小=新大小(4,10);
attr.pentipttransform=Matrix3x2.CreateRotation((float)(70*Math.PI/180));
IReadOnlyList InkStrokeList=MyInk.InkPresenter.StrokeContainer.GetStrokes();
foreach(墨水笔划列表中的墨水笔划温度)
{
温度绘图属性=属性;
}          
}

也许我没有详细说明我的问题,但我不想回忆我的笔画。我想用颜色填充绘制的“形状”。例如,在你的演示中,当你点击你的按钮后,整个东西应该是一个黑色的“土豆形”圆圈。
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; 
    }          
}