2017-07-03 82 views
3

我目前正在研究UWP應用程序,該應用程序應該允許用戶在InkCanvas上繪製任何想要的形狀。這種形狀的邊自動完成,所以沒有空地(到目前爲止,一切正常)。UWP InkCanvas用彩色填充徒手繪製的形狀

現在我的問題是:如何自動填充單色(或圖案)的形狀?我知道有一個「Point in Polygon」算法,但是我不知道如何在UWP InkCanvas中實現它,因爲我沒有真正瞭解如何搜索形狀內的點,而無需遍歷帆布。

編輯: 我實際上是通過使用「Canvas」作爲覆蓋來繪製Polyline來完成的。通過使用Polyline.Fill()方法它工作。但我只需要「InkCanvas」上的相同效果。

回答

0

現在我的問題是:如何自動填充單色(或圖案)的形狀?我知道有一個「點多邊形」的算法,但我不知道如何通過爲InkStroke.DrawingAttributes設置新InkDrawingAttributes實現它在UWP InkCanvas

你可以重繪中存在的墨跡畫布你的筆跡。

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

+0

也許我沒有具體說明我的問題就夠了,但我不希望我重新着色墨水筆跡。我想用顏色填充繪製的「形狀」。例如,在你點擊你的按鈕後,你的演示應該是一個黑色的「馬鈴薯形」的圓圈。 – eXodiquas