Ste*_*eve 2 forms delphi scaling resize
我有一个带有TImages的Delphi表单.实际上,它是一个带有"图标"的"假"桌面(TImages).
当用户调整表单大小(例如,缩放或最大化表单)时,表单上的图标应按比例对齐.
现在,我正在用图像做这样的事情:
ImageX.Left:=Round(ImageX.Left * (Width / OldWidth));
ImageX.Top:=Round(ImageX.Top * (Height / OldHeight));
Run Code Online (Sandbox Code Playgroud)
现在这没关系,只要我开始使最大化的形式更小.
在这种情况下,最右边的图像部分地由表单的边框切割(它们离开表单的客户区域).
如果我重新定位这些图像以适合客户区域,那么在缩小到最大尺寸时图标的位置会变形.
任何更好的算法/修复的想法?
谢谢!
首先,当您只移动图像时,您无法使用正确缩放的桌面,也不能缩放它们.您可以通过移动图像的中点而不是左上角来做得更好.它仍然不会是完美的,但它会更好.当然,现在图像将被四面切割,而不仅仅是底部和右边,但至少它将是对称的:-)
其次,由于您经常覆盖"原始"值(ImageX的顶部和左侧坐标),您将收到累积舍入误差.最好将原始值存储在某种集合或数组中,并根据原始值而不是之前的值设置新位置.
像这样的东西:
ImageX.Left:=Round(ImageX_OriginalLeft * (Width / Original_Width));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |