2014-10-07 156 views
0

我的意图是在一边有一个PaintBox和几个小图像。然后,我希望能够拖动paintBox中的每个图像并将它们排列在那里,以便稍后我可以将PaintBox与图像的排列结合起来保存。 这可能吗?如何?Delphi将画布上的图像拖放到PaintBox中

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

有没有更好的方法?我正在尝试查看是否可以制作简单的Paint应用程序。 有没有人有一些代码可以帮助我? 谢谢。

回答

0

您不能将TImage放在TPaintBox的内部。您必须绘制TPaintBox.OnPaint事件中的所有内容。创建一个单独的非TImage图像列表,供您在需要时绘制。

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

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