我的目的是在一侧有一个PaintBox和几个小图像。然后,我希望能够拖动paintBox中的每个图像并将它们排列在那里,以便稍后我可以使用生成的图像排列保存PaintBox。 可能吗?怎么样?
到目前为止,我可以在一个表单周围拖放控件(TControl),但由于这不是我需要的,我对TImage和TPaintBox有困难。 (意思是相同的代码不适用)
有更好的方法吗?我想看看我是否可以制作一个简单的Paint应用程序。 有没有人有一些能帮助我的代码? 谢谢。
答案 0 :(得分:0)
您无法在TImage
内加TPaintBox
。你必须在TPaintBox.OnPaint
事件中绘制所有内容。在需要时创建一个单独的非TImage
图像列表。
您需要使用OnMouse...
事件来了解用户在PaintBox中拖动的位置,使用Invalidate()
触发重新绘制,以便您可以重绘正在拖动的图像。在OnMouseDown
中,设置拖动处于活动状态的标记,并保存提供的鼠标坐标和有关单击哪个图像的信息。在OnMouseUp
中,清除标记。在OnMouseMove
中,如果启用了拖动标记,请保存当前鼠标坐标并调用Invalidate()
。在OnPaint
中,以保存的坐标绘制图像。
另一种方法是切换到TPanel
或TScrollBox
,并将TImage
控件放在其中,然后您可以像任何其他控件一样拖动它们。