Delphi XE Android]获取屏幕的物理分辨率


本文整理自网络,侵删。

 

在Windows下,我们可以用Screen对象获取当前分辨率,但在Android等FMX框架下,Screen.Size的值明显不正确。在Delphi.org上看到一篇文章,发现原来是这样子:)

var

  DeviceBehavior: IDeviceBehavior;

  DisplayMetrics: TDeviceDisplayMetrics;

begin

if TBehaviorServices.Current.SupportsBehaviorService(IDeviceBehavior,DeviceBehavior,Self) then

  begin

  DisplayMetrics:=DeviceBehavior.GetDisplayMetrics(Self);

  Label1.Text:='物理分辨率:'+IntToStr(DisplayMetrics.PhysicalScreenSize.cx)+'x'+IntToStr(DisplayMetrics.PhysicalScreenSize.cy)+#13#10+

    '屏幕尺寸:'+FloatToStr(sqrt(

      DisplayMetrics.PhysicalScreenSize.cx*DisplayMetrics.PhysicalScreenSize.cx/DisplayMetrics.PixelsPerInch/DisplayMetrics.PixelsPerInch+

      DisplayMetrics.PhysicalScreenSize.cy*DisplayMetrics.PhysicalScreenSize.cy/DisplayMetrics.PixelsPerInch/DisplayMetrics.PixelsPerInch))+#13#10+

    'PPI:'+FloatToStr(DisplayMetrics.PixelsPerInch);

  end;

end;


TDeviceDisplayMetrics的几个成员:

PhysicalScreenSize记录了物理分辨率,单位是像素,cx为宽度,cy为高度

LogicalScreenSize 记录了逻辑分辨率,单位是英寸,实际上是物理分辨率除以每英寸的像素数(PPI)取整的结果

AspectRatio 屏幕比例
PixelsPerInch 每英寸像素数
ScreenScale 屏幕缩放比例
FontScale 字体缩放比例

相关阅读 >>

Delphi 如何知道鼠标点击的statusbar的位置

Delphi简单判断程序30秒没有键盘和鼠标动作示例

Delphi 利用tcomm组件 spcomm 实现串行通信

Delphi 62进制转10进制

Delphi 实现定时功能

Delphi 最快字符串查找(匹配)算法

Delphi读写xml的技巧

Delphi 关于rs485总线通信协议开发注意事项

Delphi 在窗口作图的源代码

Delphi 安卓蓝牙动态权限

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...