2017-06-09 2 views
0

私は "カスタムストローク"を追加したInkCanvasを持っています。WPFに追加されたカスタムストロークを削除する方法境界矩形だけを知っているInkCanvas DrawingContext?

私はカスタムストロークはそのDrawingContextではを通じてInkCanvasにを追加する方法に消去するよう完全な損失でいます。 (Googleは助けになっていない:()私は消去したい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

Ugh ...カスタムストロークはストロークを継承し、一度書き込まれたデータコンテキストは書き換えられない場合でもInkCanvasはInkCanvasEditingModeを変更することでストローク(カスタムストロークを含む)を消去できますEraseByStrokeへ。これが誰かを助けることを願っています。

関連する問題