【问题标题】:How to know the scale for a bitmap in Delphi XE8?如何知道 Delphi XE8 中位图的比例?
【发布时间】:2015-05-11 07:46:53
【问题描述】:

我有一个用于绘制签名的图像组件。目前你必须手动设置一个 scale 属性才能让它正确绘制,因为每个设备都有不同的屏幕密度。

有没有一种方法可以计算规模或不必同时使用 Android 和 iOS 的规模?

正如您在以下链接中看到的那样,每个 android 和 iOS 设备都有不同的屏幕密度:http://docwiki.embarcadero.com/RADStudio/XE8/en/Using_Multi-Resolution_Bitmaps

也尝试过这种方法,但它没有给出正确的比例:

function GetScreenScale: Single;
var
   ScreenService: IFMXScreenService;
begin
   Result := 1;
   if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then
   begin
      Result := ScreenService.GetScreenScale;
   end;
end;

【问题讨论】:

  • 我确信有一种方法可以计算比例。你在寻求什么结果?你会得到什么结果?发布一些代码或屏幕截图可能有助于描述问题。
  • 我删除了我的答案,你显然不明白。如果你能明白我说的话,那你就没事了。我本来可以帮助您理解的,但是您对我投了反对票!无论如何,祝你好运。
  • @DavidHeffernan 我确实理解,但它不正确
  • 你不明白。我可以解释,但你不想听。没关系。如果你想让我再试一次,请告诉我。出于善意,您将ImageWidth 表示为您的图像控件的宽度,这不是您的意思。
  • 你怎么知道我不想听?我很想听。但我需要获取屏幕属性才能解决我的问题,所以我知道您的解决方案无法正常工作。

标签: delphi bitmap scale firemonkey delphi-xe8


【解决方案1】:

解决方案:

function GetScreenScale: Single;
var
   Service : IFMXScreenService;
begin
   Service := IFMXScreenService(
      TPlatformServices.Current.GetPlatformService(IFMXScreenService));
   Result := Service .GetScreenScale;
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多