在绘画应用程序中实现自由格式绘图

时间:2010-10-15 22:51:48

标签: paint freeform

我想了解如何在绘画应用中实现自由形式绘图。鉴于命令对象将包含单击,任意拖动和释放,如何将其存储在命令中并绘制到位图上下文中?

对于初学者来说,数据是否只是放在大型列表中的mousemove命令中报告的每个像素坐标?我想不出任何其他明显的方法,因为用户可能没有绘制可以优化的完整直线。

它的绘制是基本上在鼠标移动中报告的每个坐标上标记实心圆(半径是笔宽度),如果移动跳得足够远,则在两者之间进行插值?

更新:澄清我在询问数据存储方式时的含义。我在谈论命令对象中的数据如何看起来并且认为它将是一个“移动到”像素坐标列表来表示动作。我没有提到正在绘制的位图图像中的数据表示。

1 个答案:

答案 0 :(得分:0)

我想这取决于你是否想要撤消功能。如果没有,您不需要存储命令列表,只需更新MouseMove处理程序中的位图。

如果您希望能够撤消,那么您可能希望存储命令(在这种情况下,鼠标在绘图期间移动到的坐标列表,即鼠标按钮关闭时)是一种方法。您还需要跟踪设置(例如笔半径,颜色等)。

或者你可以在每个命令完成后存储多个位图副本(尽管这会为大位图使用大量内存)。