我使用 System.Drawing.Graphics graphicsObj
在System.Windows.Forms.Panel
上绘制对象。存储有关旧图纸信息的明智方法是什么?要在鼠标移动事件期间删除最后一个绘图?
我必须记住触控笔设置和电源线吗?
谢谢:)
//编辑。我想我的问题不清楚。我有一个小组。我把它当作一个绘画的容器。
我可以画多条线,圆,矩形。
每次我按下鼠标(MouseDown)时,我都想开始绘制新对象。当我移动鼠标(MouseMove)时,当前绘制的对象必须更改(例如线条,如油漆)。当我释放鼠标(MouseUp)时,我希望我绘制的对象成为常量。
现在,我尝试在 MouseMove 事件上调用graphicsObj.Clear();
方法,但它清除了所有绘制的对象。
所以我推断,我必须存储有关旧绘制对象的信息。现在,我必须制作列表(向量左右)并存储有关该对象的信息?还是有办法避免它?
你应该处理Panel
Paint
事件中的所有绘画,这正是它的目的。
Paint
事件在其PaintEventArgs
中为您提供了应使用Graphics
对象。这将确保您的说明在每次刷新时都绘制,而不仅仅是一次。
如果从 Panel
派生,请改用 OnPaint
方法。
展开原始问题后编辑:
应将存储数据的逻辑与显示数据的逻辑分开。Graphics
对象的用途是显示现有数据,而不是存储数据。
我认为制作您正在绘制的对象List
或其他集合是最好的解决方案。您还需要标志来处理什么是"活动"对象的所有逻辑等。
我认为您可以将最后一个 x,y 存储到 Points 对象数组中作为历史记录。
不确定我是否明白你在这里想要什么,但如果你想要某种关于油漆画的记忆。绘制到位图集合,然后让绘制例程将其中一个位图绘制到控件上。