2017-08-23 80 views
-1

嘗試更改我的FMX表單的尺寸以模擬「FullScreen」模式,但是當用戶使用一些更大的縮放比例設置其設置時,使用屏幕尺寸不適當,因爲整個表單比屏幕更大。是否有可能在Windows中檢索字體縮放?

如何檢索縮放值,以便我可以相應地調整表單的大小?

編輯: 這是一個小小的片段,顯示了我對這個問題的意圖以及它是如何解決的。感謝您的時間和幫助。

procedure TMyForm.ApplyFullScreen; 
var 
    tmpEscale: Extended; 
begin 
    BorderStyle := TFmxFormBorderStyle.None; 
    Left := 0; 
    Top := 0; 

    tmpEscala := USER_DEFAULT_SCREEN_DPI/GetDeviceCaps(GetDC(0), LOGPIXELSX); 

    Height := Round(Screen.Height * tmpEscala); 
    Width := Round(Screen.Width * tmpEscala); 
end; 
+0

這是相當不清楚的。如果我們確切知道你的代碼是什麼,這將有所幫助。也許有一些簡單的錯誤。 –

+0

根據您的應用是否支持DPI(需要虛擬化值),屏幕尺寸會有所不同。您的應用程序是否支持DPI? –

+0

對不起,這個令人困惑的問題。 GetDeviceCaps爲我做了之後,我意識到只有重新啓動我的機器後,DPI信息纔會更改。 @RemyLebeau我的申請確實是DPI意識到的,這是我設置暗示時混亂的一部分 – TioGuedes

回答

0

當你調用EnumDisplaySettings產生的DEVMODE結構包含在dmYResolution領域的DPI設置。請注意,通過NULL作爲設備名稱到EnumDisplaySettings將只獲得一個屏幕的信息,在多監視器系統上,您應該枚舉所有顯示設備。

您也可以在設備上下文中調用GetDeviceCaps,並查詢LOGPIXELSXLOGPIXELSY

的DPI對應如下到字體縮放:

  • 100%= 96 DPI
  • 125%= 120 dpi的
  • 150%= 144 dpi的
  • 200%= 192 dpi的

欲瞭解更多信息,這將是很好的參考the MSDN article on DPI-related APIs

相關問題