asa*_*add 15 delphi screen-resolution windows-7
在Windows 7的高DPI模式下尝试使用我的Delphi 2010应用程序更多用户我已经尝试了几种方法来检索PixelsPerInch并与96进行比较.唉,无论我尝试什么,我总是得到96.我的问题是:
这是我尝试过的
dpiX := Form1.PixelsPerInch
Run Code Online (Sandbox Code Playgroud)
和
dpiX := Screen.PixelsPerInch
Run Code Online (Sandbox Code Playgroud)
最后:
D2DFactoryOptions.DebugLevel := D2D1_DEBUG_LEVEL_NONE;
pD2DFactoryOptions := @D2DFactoryOptions;
if D2D1CreateFactory(
D2D1_FACTORY_TYPE_SINGLE_THREADED,
IID_ID2D1Factory,
PD2DFactoryOptions,
D2DFactory
) <> S_OK then exit;
D2DFactory.GetDesktopDpi(dpiX, dpiY)
Run Code Online (Sandbox Code Playgroud)
小心猜?这是正确的dpiX是100%,125%和150%的常数96
请指教.
Dav*_*nan 11
我认为您需要通过在应用程序清单中包含此项来将您的应用程序标记为具有高DPI感知能力:
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
Run Code Online (Sandbox Code Playgroud)
您好像正在回归所谓的DPI虚拟化.
您可以在以下位置查看注册表值 AppliedDPI
HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
Run Code Online (Sandbox Code Playgroud)
感谢 Andreas Rejbrand。
归档时间: |
|
查看次数: |
12166 次 |
最近记录: |