wpf inkcanvas 笔划按像素擦除

wpf inkcanvas stroke erase by pixel

我正在wpf中使用inkcanvs开发绘图工具控件。 当我绘制矩形时,这是原始图像。

Original Image

而且我设置的编辑模式是逐点擦除。当我擦除矩形时,这是工作后的图像。

Erased Image

我希望擦除功能与 windows 中的默认绘图工具一样有效。它将按像素工作。按像素擦除形状。

部分源代码

public class Label : Stroke
{
protected override void DrawCore(DrawingContext drawingContext, DrawingAttributes drawingAttributes)

Rect rect = new Rect((Point)this.StylusPoints[0], (Point)this.StylusPoints[1]);

drawingContext.DrawRectangle(...)

标准 API 无法做到这一点。

只有将墨迹图像(笔画,增强矢量)转换为位图图像(包含像素),才能对单个像素进行操作,但笔画信息将丢失。

通过相当多的努力,可以创建一个应用程序来跟踪其所有用户的操作(绘制一些笔画、添加一个像素、删除一个像素)并在每次 UI 需要重绘时重播它们, 在需要的地方注入从矢量到位图的转换。

这是一个不错的练习,但可能会太慢 and/or 复杂。