【问题标题】:Delphi drag and drop an image from canvas to a PaintBoxDelphi 将图像从画布拖放到 PaintBox
【发布时间】:2014-10-07 05:28:11
【问题描述】:

我的目的是在一边有一个 PaintBox 和几个小图像。然后,我希望能够将每个图像拖到paintBox 中并将它们排列在那里,以便稍后我可以保存带有图像排列结果的PaintBox。 可能吗?怎么做?

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

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

【问题讨论】:

    标签: delphi delphi-xe


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-08
      • 2015-11-07
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      相关资源
      最近更新 更多