首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现FMX高清应用放大和放大?

如何实现FMX高清应用放大和放大?
EN

Stack Overflow用户
提问于 2020-07-19 07:05:26
回答 1查看 503关注 0票数 1

我是FireMonkey的新手。最近我正在使用Delphi开发一个小型的2D游戏,我想添加放大/缩小效果时,我尝试了,并搜索了Idera样本和FMX代码,没有任何收获。那么,有没有办法实现缩放?为什么FMX不提供易于使用的“比例”属性?FMX对用户不友好,而且非常缺乏成熟的产品、样本代码和讨论。非常感谢,原谅我英语不好。

让它变得简单:

File-->New-->Multi-Device Application-->Blank Application,点击OK,然后我们应该得到一个FMX高清应用程序,我想做的是,当我推鼠标时,主窗体的视图可以放大/缩小。

代码语言:javascript
复制
    procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
      WheelDelta: Integer; var Handled: Boolean);
    begin
      // ?
    end;

对不起,我的描述很差,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-19 17:56:41

在表单上放置一个TScaledLayout (在下面名为ScaledLayout1 ),并将Align属性设置为Client。此外,将HitTest = True设置为在布局的任何位置接收鼠标事件。然后将所有其他控件放置在此布局上。

ScaledLayout1布局创建一个ScaledLayout1事件(在下面名为ScaledLayout1MouseWheel )。

在窗体上声明私有字段

代码语言:javascript
复制
private
  StoredWheelDelta: extended;

这是积累滚动金额所必需的。

然后为OnMouseWheel()事件编写代码:

代码语言:javascript
复制
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则将更改降低到十分之一。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62977284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档