TImage 不调整大小
TImage does not resize
我在可调整大小的表单上有一个 TImage
,我希望它在我调整表单大小时调整大小。
我尝试了什么:
- 启用所有
Anchors
选项
- 将
TImage
放在 TPanel
上,然后将面板和图像对齐设置为 alClient
- 在表单的
OnResize
事件中分配新的 Width
和 Height
None 这些都可以。
这是默认的表单大小。 TImage
会在左侧的任何参数更改或图像缩放 in/out(使用鼠标滚轮)时重新绘制。在每次重绘时,模式都会重复,直到填满整个 TImage
.
这是调整大小后的表格。请注意,图像大小保持不变。
启用 Stretch
属性 确实有效,但它也会缩放图像的内容,这是我不想要的。
我该如何解决这个问题?
我在 Delphi 10.3
重新阅读你的描述,我明白了问题所在。
当图像尺寸发生变化时,如果关闭拉伸,内部图片不会改变其大小。您必须手动修改内部位图大小:
Image2.Picture.Bitmap.Width := Image2.Width;
Image2.Picture.Bitmap.Height := Image2.Height;
//now diagonal is drawn properly
Image2.Canvas.MoveTo(0, 0);
Image2.Canvas.LineTo(Image2.Width, Image2.Height);
我在可调整大小的表单上有一个 TImage
,我希望它在我调整表单大小时调整大小。
我尝试了什么:
- 启用所有
Anchors
选项 - 将
TImage
放在TPanel
上,然后将面板和图像对齐设置为alClient
- 在表单的
OnResize
事件中分配新的Width
和Height
None 这些都可以。
这是默认的表单大小。 TImage
会在左侧的任何参数更改或图像缩放 in/out(使用鼠标滚轮)时重新绘制。在每次重绘时,模式都会重复,直到填满整个 TImage
.
这是调整大小后的表格。请注意,图像大小保持不变。
启用 Stretch
属性 确实有效,但它也会缩放图像的内容,这是我不想要的。
我该如何解决这个问题?
我在 Delphi 10.3
重新阅读你的描述,我明白了问题所在。
当图像尺寸发生变化时,如果关闭拉伸,内部图片不会改变其大小。您必须手动修改内部位图大小:
Image2.Picture.Bitmap.Width := Image2.Width;
Image2.Picture.Bitmap.Height := Image2.Height;
//now diagonal is drawn properly
Image2.Canvas.MoveTo(0, 0);
Image2.Canvas.LineTo(Image2.Width, Image2.Height);