我是FireMonkey的新手。最近我正在使用Delphi开发一个小型的2D游戏,我想添加放大/缩小效果时,我尝试了,并搜索了Idera样本和FMX代码,没有任何收获。那么,有没有办法实现缩放?为什么FMX不提供易于使用的“比例”属性?FMX对用户不友好,而且非常缺乏成熟的产品、样本代码和讨论。非常感谢,原谅我英语不好。
让它变得简单:
File-->New-->Multi-Device Application-->Blank Application,点击OK,然后我们应该得到一个FMX高清应用程序,我想做的是,当我推鼠标时,主窗体的视图可以放大/缩小。
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; var Handled: Boolean);
begin
// ?
end;对不起,我的描述很差,谢谢!
发布于 2020-07-19 17:56:41
在表单上放置一个TScaledLayout (在下面名为ScaledLayout1 ),并将Align属性设置为Client。此外,将HitTest = True设置为在布局的任何位置接收鼠标事件。然后将所有其他控件放置在此布局上。
为ScaledLayout1布局创建一个ScaledLayout1事件(在下面名为ScaledLayout1MouseWheel )。
在窗体上声明私有字段
private
StoredWheelDelta: extended;这是积累滚动金额所必需的。
然后为OnMouseWheel()事件编写代码:
procedure TForm12.ScaledLayout1MouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; var Handled: Boolean);
begin
StoredWheelDelta := StoredWheelDelta + WheelDelta; // accumulate wheeldelta's
ScaledLayout1.Scale.X := (1 + StoredWheelDelta / 120 / 10);
ScaledLayout1.Scale.Y := (1 + StoredWheelDelta / 120 / 10);
end;值120和10只是为了将更改缩放到一个合理的值。120与WheelDelta的典型值相同,而10则将更改降低到十分之一。
https://stackoverflow.com/questions/62977284
复制相似问题