【发布时间】:2011-12-02 17:41:48
【问题描述】:
我正在从磁盘加载图像并希望将其复制(部分)到第二个 TImage:
Image1.Picture.LoadFromFile(S);
with Image1.Picture.Bitmap do
Image2.Canvas.CopyRect(Image2.Canvas.ClipRect, Canvas, Canvas.ClipRect);
Image2 只显示一个白色矩形,而 Image1 不显示磁盘中的文件。如果我删除第二条语句 Image1 确实显示图像。 (最奇怪的是:如果我只注释掉 CopyRect 语句并留下“with”行(空语句)Image1 也不显示!)
如何使用 CopyRect 复制图像的一部分?
编辑
当我将这两个语句分成两个单独的操作(按钮)时,会发生以下情况:
- 图像加载并在 Image1 中显示
- Image1 消失(!),Image2 显示一个白色矩形。
顺便说一句,我使用的是 Delphi 2009。
【问题讨论】:
-
我复制粘贴了你的代码,它对我来说很好用。尝试分离两个语句(在 2 个按钮中),看看会发生什么
-
这并不奇怪:
Image1.Picture.Bitmap强制图形的类型包含“位图”。如果Image1.Picture还不是位图(看起来是这样,尽管问题中没有),图形会释放它并创建位图。 -
@Magicmaster - 谢谢,但似乎不起作用。我添加了我的问题。
-
这就是@Magic 的代码工作的原因,他正在加载一个“位图”。
-
@stevenvh:
S的文件名是什么?具体来说,文件扩展名是什么?是'bmp'、'png'、'jpg'、...?
标签: delphi