Итак, у меня есть InkCanvas, к которому я добавил «пользовательские штрихи».
Я полностью не понимаю, как удалить пользовательские штрихи, добавленные в InkCanvas через его DrawingContext. (Google не помог :( ) Если предположить, что у меня есть ограничивающий прямоугольник для области на 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)));
}
}
Подобные методы приводят к картинке вида:
Как стираются пользовательские штрихи, зная только ограничивающий прямоугольник?
Спасибо за любую помощь или предложения.