Delphi将图像从画布拖放到PaintBox

时间:2014-10-07 05:28:11

标签: delphi delphi-xe

我的目的是在一侧有一个PaintBox和几个小图像。然后,我希望能够拖动paintBox中的每个图像并将它们排列在那里,以便稍后我可以使用生成的图像排列保存PaintBox。 可能吗?怎么样?

到目前为止,我可以在一个表单周围拖放控件(TControl),但由于这不是我需要的,我对TImage和TPaintBox有困难。 (意思是相同的代码不适用)

有更好的方法吗?我想看看我是否可以制作一个简单的Paint应用程序。 有没有人有一些能帮助我的代码? 谢谢。

1 个答案:

答案 0 :(得分:0)

您无法在TImage内加TPaintBox。你必须在TPaintBox.OnPaint事件中绘制所有内容。在需要时创建一个单独的非TImage图像列表。

您需要使用OnMouse...事件来了解用户在PaintBox中拖动的位置,使用Invalidate()触发重新绘制,以便您可以重绘正在拖动的图像。在OnMouseDown中,设置拖动处于活动状态的标记,并保存提供的鼠标坐标和有关单击哪个图像的信息。在OnMouseUp中,清除标记。在OnMouseMove中,如果启用了拖动标记,请保存当前鼠标坐标并调用Invalidate()。在OnPaint中,以保存的坐标绘制图像。

另一种方法是切换到TPanelTScrollBox,并将TImage控件放在其中,然后您可以像任何其他控件一样拖动它们。