gpt4 book ai didi

delphi - 如何在Delphi中在调整大小的TImage的整个区域上绘图?

转载 作者:行者123 更新时间:2023-12-03 15:20:40 25 4
gpt4 key购买 nike

我已将在 Delphi 2009 中的 TImage.Canvas 上绘制的问题缩小到以下可重现的情况:

给定:一个表单,其上有一个 TImageTLabelTButtonTImage 锚定到所有四个边缘,以便调整表单大小将调整 TImage 的大小。我想要做的是在调整大小后绘制可用的 Image1 的最大区域。因此,在我的测试用例中,我的 Button 的 OnClick 处理程序中有以下代码:


procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:= IntToStr (Image1.Width)+' x '+IntToStr(Image1.Height);
Image1.Canvas.Pen.Color:= 0;
Image1.Canvas.Rectangle(0,0,Image1.Width, Image1.Height);
end;
您将看到,如果调整表单大小, Image1.Width.Height 会按预期更改,但是如果调整大小的表单更大,则绘制的矩形 比原来的要不完整,只能在之前的同一区域上绘制。

如何使用整个调整大小的区域?

无论如何,在我最初的问题中,我使用了Image1.Stretch,它允许我在调整大小时使用更多区域,但会导致我的绘图扭曲(不希望) 。如果我还使用 Image1.Proportional,那就更好了,但我仍然无法使用完整的可用区域。 Image1.AutoSize 似乎也没有做任何对我有用的事情。

感谢任何帮助。

最佳答案

将 OnResize 事件添加到您的表单中:

procedure TForm1.FormResize(Sender: TObject);
begin
Image1.Picture.Bitmap.Width := Image1.Width;
Image1.Picture.Bitmap.Height := Image1.Height;
end;

此外,如果您使用组件进行绘图,而不是显示文件等中的图像,请考虑使用 TPaintBox 而不是 TImage。

关于delphi - 如何在Delphi中在调整大小的TImage的整个区域上绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1593277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com