所以我有一个InkCanvas,我添加了“自定义笔画”。
我完全不知道如何通过 DrawingContext 擦除自定义笔画添加到InkCanvas中。 (谷歌一直没有帮助:()假设我想要擦除InkCanvas上的区域的边界矩形,怎么能这样做?
(我很快得出的结论是,一旦在DrawingContext上绘制了某些内容,就无法将其删除 - 仅限于:()。
自定义笔划是通过覆盖笔划的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)));
}
}
如果仅知道边界矩形,如何删除自定义笔划?
感谢您提供任何帮助或建议。
答案 0 :(得分:1)
呃......应该很明显的是,自定义笔画继承自Stroke,即使写入的datacontext不能被写入,InkCanvas也可以通过将InkCanvasEditingMode更改为擦除其笔画 - 包括自定义笔画。 EraseByStroke。希望这有助于某人。