2015-05-11 34 views
-2

我有用於繪製簽名的圖像組件。此刻,您必須手動設置縮放屬性才能使其正確繪製,因爲每個設備都具有其他屏幕密度。如何知道Delphi XE8中位圖的縮放比例?

有沒有一種方法來計算比例或不必使用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; 
+0

我敢肯定,這是一種計算比例的方法。你在尋找什麼結果?你會得到什麼結果?發佈一些代碼或屏幕截圖可能有助於描述問題。 –

+1

我刪除了我的答案,你顯然不明白。如果你只能理解我說的話,你會沒事的。我會幫助你理解,但是你低估了我!無論如何,祝你好運。 –

+0

@DavidHeffernan我明白,但它不正確 – Remi

回答

0

解決方案:

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

它可能足以進行條件編譯。 XE-8(實際上更早版本)都定義了眼前這個

{$ IFDEF ANDROID}

{$ IFDEF IOS}

看到Delphi Conditional Compile

+0

並非所有的Android設備都具有相同的大小屏幕。所有iOS設備也沒有相同尺寸的屏幕。 –

+0

我知道如何進行條件編譯。問題就像大衛說的。並非所有屏幕都具有相同的大小和分辨率。 – Remi