C# - 存储由 graphicsObject 绘制的对象



我使用 System.Drawing.Graphics graphicsObjSystem.Windows.Forms.Panel上绘制对象。存储有关旧图纸信息的明智方法是什么?要在鼠标移动事件期间删除最后一个绘图?

我必须记住触控笔设置和电源线吗?

谢谢:)

//编辑。我想我的问题不清楚。我有一个小组。我把它当作一个绘画的容器。

我可以画多条线,圆,矩形。

每次我按下鼠标(MouseDown)时,我都想开始绘制新对象。当我移动鼠标(MouseMove)时,当前绘制的对象必须更改(例如线条,如油漆)。当我释放鼠标(MouseUp)时,我希望我绘制的对象成为常量。

现在,我尝试在 MouseMove 事件上调用graphicsObj.Clear();方法,但它清除了所有绘制的对象。

所以我推断,我必须存储有关旧绘制对象的信息。现在,我必须制作列表(向量左右)并存储有关该对象的信息?还是有办法避免它?

你应该处理Panel Paint事件中的所有绘画,这正是它的目的。

Paint 事件在其PaintEventArgs中为您提供了应使用Graphics对象。这将确保您的说明在每次刷新时都绘制,而不仅仅是一次。

如果从 Panel 派生,请改用 OnPaint 方法。

展开原始问题后编辑:

应将存储数据的逻辑与显示数据的逻辑分开。Graphics对象的用途是显示现有数据,而不是存储数据。

我认为制作您正在绘制的对象List或其他集合是最好的解决方案。您还需要标志来处理什么是"活动"对象的所有逻辑等。

我认为您可以将最后一个 x,y 存储到 Points 对象数组中作为历史记录。

不确定我是否明白你在这里想要什么,但如果你想要某种关于油漆画的记忆。绘制到位图集合,然后让绘制例程将其中一个位图绘制到控件上。

相关内容

  • 没有找到相关文章