4

我想就如何在绘画应用程序中实现自由绘图提出您的建议。鉴于命令对象将包含单击、任意拖动和释放,这将如何必然存储在命令中并绘制到位图上下文中?

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

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

更新:当我询问如何存储数据时,澄清我的意思。我在谈论命令对象中的数据的外观,并认为它将是一个“移动到”像素坐标列表来表示操作。我不是指正在绘制的位图图像中的数据表示。

4

1 回答 1

0

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

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

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

于 2010-10-18T14:07:41.443 回答