说明:TSelection 控件,当在属性 Proportional = True 为等比缩放时,拉动左下角,右上角会跟着移动。
适用:Berlin 10.1.1 (或之前版本) Firemonkey
修正方法:
请将源码 FMX.Objects.pas 复制到自己的工程目录里,再进行修改。
procedure TSelection.GetTransformLeftBottom(AX, AY: Single; var NewSize: TPointF; var Pivot: TPointF);
...略...
{---> AY := AY + LCorrect.Y; // 删除代码
{+++>}AY := AY - LCorrect.Y; // 新增代码:修正等比缩放时,拉动左下角,右上角会跟着移动 by Aone @ 2016.10.10
...略...
end;
procedure TSelection.ResetInSpace(const ARotationPoint: TPointF; ASize: TPointF);
...略...
begin
LLocalPos.X := LAbsPos.X - ASize.X * RotationCenter.X * Scale.X;
LLocalPos.Y := LAbsPos.Y - ASize.Y * RotationCenter.Y * Scale.Y;
end;
{+++>}if not FProportional or (FProportional and Sameva lue(ASize.X / ASize.Y, FRatio, 0.0001)) then // 加入代码
SetBounds(LLocalPos.X, LLocalPos.Y, ASize.X, ASize.Y);
end;
修正前:
修正后:
QC:
https://quality.embarcadero.com/browse/RSP-16061