如何知道 Delphi XE8 中位图的比例?
How to know the scale for a bitmap in Delphi XE8?
我有一个用于绘制签名的图像组件。目前您必须手动设置比例 属性 才能正确绘制,因为每个设备都有不同的屏幕密度。
有没有办法计算比例,或者不必同时使用 Android 和 iOS 的比例?
正如您在下面的 link 中所读到的,每个 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;
解法:
function GetScreenScale: Single;
var
Service : IFMXScreenService;
begin
Service := IFMXScreenService(
TPlatformServices.Current.GetPlatformService(IFMXScreenService));
Result := Service .GetScreenScale;
end;
我有一个用于绘制签名的图像组件。目前您必须手动设置比例 属性 才能正确绘制,因为每个设备都有不同的屏幕密度。
有没有办法计算比例,或者不必同时使用 Android 和 iOS 的比例?
正如您在下面的 link 中所读到的,每个 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;
解法:
function GetScreenScale: Single;
var
Service : IFMXScreenService;
begin
Service := IFMXScreenService(
TPlatformServices.Current.GetPlatformService(IFMXScreenService));
Result := Service .GetScreenScale;
end;