gpt4 book ai didi

delphi - 按比例重新定位 FormResize 上的图像

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

我有一个带有 TImages 的 Delphi 表单。实际上,它是一个带有“图标”(TImages)的“假”桌面。

当用户调整表单大小(例如缩放或最大化)时,表单上的图标应该按比例对齐。

现在,我正在用图像做这样的事情:

ImageX.Left:=Round(ImageX.Left * (Width / OldWidth));
ImageX.Top:=Round(ImageX.Top * (Height / OldHeight));

现在这没关系,只要我开始使最大化的形式更小。

在这种情况下,最右边的图像被表单的边框部分切割(它们不在表单的客户区)。

如果我重新定位这些图像以适合客户区域,那么图标的位置会在缩小到最大尺寸时失真。

关于更好的算法/修复的任何想法?

谢谢!

最佳答案

首先,当您只移动图像并且不缩放它们时,您不能拥有正确缩放的桌面。通过移动图像的中点而不是左上角,您可以做得更好。它仍然不会完美,但它会更好地工作。当然,现在图像将在所有四个侧面都被裁剪,不仅仅是底部和右侧,但至少它会是对称的 :-)

其次,由于您不断地覆盖“原始”值(ImageX 的顶部和左侧坐标),您将获得累积的舍入误差。您最好将原始值存储在某种集合或数组中,并根据原始值而不是之前的值设置新位置。

像这样的东西:

ImageX.Left:=Round(ImageX_OriginalLeft * (Width / Original_Width));

关于delphi - 按比例重新定位 FormResize 上的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3841901/

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