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

时间:2012-11-26 18:00:48

标签: c# graphics drawing

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

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

谢谢:)

//编辑。我想我的问题不明确。我有一个小组。我把它当成一个绘画容器。

我可以绘制多条线,圆形,矩形。

每次按下鼠标(MouseDown),我都想开始绘制新对象。当我移动鼠标(MouseMove)时,当前绘制的对象必须更改(例如,线条,如在绘画中)。当我释放鼠标(MouseUp)时,我想要绘制的对象变得不变。

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

所以我推断,我必须存储有关旧绘制对象的信息。现在,我必须制作列表(矢量等)并存储有关该对象的信息?或者有一种方法可以避免它?

3 个答案:

答案 0 :(得分:1)

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

Paint事件会为您提供PaintEventArgs您应该使用的Graphics对象。这将确保您的指示在每次刷新时都被绘制,而不仅仅是一次。

如果您是从Panel派生而来,请改写OnPaint方法。

在原始问题扩展后进行修改:

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

我认为制作List或其他正在绘制的对象集合是最佳解决方案。 你还需要标志来处理什么是" live"对象等。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

不确定我在这之后得到的是什么,但是如果你想要了解油漆的内存。 绘制到位图集合,然后让您的绘图例程将其中一个位图绘制到控件上。