2017-06-09 60 views
0

所以我有一個InkCanvas,我添加了「自定義筆劃」。如何刪除添加到只知道邊界矩形的WPF InkCanvas DrawingContext的自定義筆劃?

我在完全喪失作爲對擦除自招如何被添加到InkCanvas通過其的DrawingContext。 (谷歌一直沒有幫助:()假設我有一個邊界矩形的InkCanvas上的區域,我想要擦除,這怎麼可以做到?

(我很快得出結論,一次事情是畫在它的DrawingContext無法刪除 - 只有convered :()

自定義筆畫都以標準方式創建通過重寫中風DrawCore方法,例如,

// Draw Rectangle 
public class RectangleStroke : Stroke 
{ 
    // Constructor 
    public RectangleStroke(StylusPointCollection pts) 
     : base(pts) 
    { 
     StylusPoints = pts; 
    } 

    protected override void DrawCore(DrawingContext drawingContext, DrawingAttributes drawingAttributes) 
    { 
     if (drawingContext == null) 
     { 
      throw new ArgumentNullException("drawingContext"); 
     } 
     if (null == drawingAttributes) 
     { 
      throw new ArgumentNullException("drawingAttributes"); 
     } 
     DrawingAttributes originalDa = drawingAttributes.Clone(); 
     SolidColorBrush brush = new SolidColorBrush(drawingAttributes.Color); 
     brush.Freeze(); 
     Pen pen = new Pen(brush, 1); 

     StylusPoint stp = StylusPoints[0]; 
     StylusPoint sp = StylusPoints[1]; 

     drawingContext.DrawRectangle(brush, pen, new Rect(new Point(sp.X, sp.Y), new Point(stp.X, stp.Y))); 
    } 

} 

類似的方法產生如下圖像: enter image description here

自定義筆劃如何只知道邊界矩形?

感謝您的任何幫助或建議。

回答

0

呃......應該明顯的是,自定義筆劃從Stroke繼承,即使一次寫入的datacontext不能被寫入,InkCanvas可以通過更改InkCanvasEditingMode來擦除筆劃 - 包括自定義筆劃。到EraseByStroke。希望這有助於某人。