说明:TSelection 控件,当在属性Proportional = True 为等比缩放时,拉动左下角,右上角会跟着移动。
适用:Berlin 10.1.1 (或之前版本) Firemonkey
修正方法:
请将源码 FMX.Objects.pas复制到自己的工程目录里,再进行修改。
TSelection.GetTransformLeftBottom(AX,AY: Single; NewSize: TPointF; ...略...
<span style="color: #008000">{<span style="color: #008000">---> AY := AY + LCorrect.Y; // 删除代码
{+++><span style="color: #008000">}AY := AY - LCorrect.Y; <span style="color: #008000">//<span style="color: #008000"> 新增代码:修正等比缩放时,拉动左下角,右上角会跟着移动 by Aone @ 2016.10.10
<span style="color: #000000">
...略...
{+++><span style="color: #008000">}AY := AY - LCorrect.Y; <span style="color: #008000">//<span style="color: #008000"> 新增代码:修正等比缩放时,拉动左下角,右上角会跟着移动 by Aone @ 2016.10.10
<span style="color: #000000">
...略...
<span style="color: #0000ff">end;
<div class="cnblogs_code">
TSelection.ResetInSpace(...略... <span style="color: #0000ff">begin<span style="color: #000000">
LLocalPos.X := LAbsPos.X - ASize.X RotationCenter.X <span style="color: #000000"> Scale.X;
LLocalPos.Y := LAbsPos.Y - ASize.Y RotationCenter.Y <span style="color: #000000"> Scale.Y;
<span style="color: #0000ff">end<span style="color: #000000">;
<span style="color: #008000">{<span style="color: #008000">+++><span style="color: #008000">}<span style="color: #0000ff">if <span style="color: #0000ff">not FProportional <span style="color: #0000ff">or (FProportional <span style="color: #0000ff">and SameValue(ASize.X / ASize.Y,FRatio,<span style="color: #800080">0.0001)) <span style="color: #0000ff">then <span style="color: #008000">//<span style="color: #008000"> 加入代码
<span style="color: #000000"> SetBounds(LLocalPos.X,LLocalPos.Y,ASize.X,ASize.Y);
<span style="color: #0000ff">end;