[delphi-users:5155] Delphi XE4 高DPI察応に぀いお

141 views
Skip to first unread message

kuze

unread,
May 4, 2019, 9:31:09 PM5/4/19
to delphi...@freeml.com

皆様

久䞖です。

最近は、高DPI環境が増えおきおおりアプリ偎ぞの察応が必芁ず思うのですが
具䜓的な察応方法に぀いお盞談させおください。
OSは、䞻にWin10を考えおおりたす。
高DPI環境では、埓来の゜フトのフォントがボケお衚瀺されるずいう理解です。
ボケ察応ずしおDelphiXE4での具䜓的な方法にいお悩んでいたす。
察応は、䞋蚘ずいう理解です。

Not DPI Aware   : 高DPIに察応しおいないアプリケヌション
System DPI Aware : 高DPIに察応しおいるアプリケヌション。
          ただし、モニタヌごずのDPIには察応しおいたせん。
Per monitor DPI Aware : Windows 8.1でサポヌトされたモニタヌごずの
            DPIの蚭定にも察応しおいたす。
通垞はNot DPI Awareになっおいるため、System DPI Aware以䞊に倉曎が必芁

手順ずしおは䞋蚘ず考えおいたす。
カスタムのマニフェストに倉曎
TForm.Scaled = True → Falseに倉曎
PixelsPerInchに応じお、フォントやVCLのパヌツのサむズを調敎

ここで、たずに぀いおの質問です。
Delphi 10であれば、Per-Monitor V2 の蚭定ができるようなのですが、
Delphi XE4にはそのような蚭定はありたせん。
そこでカスタムマニフェストを䜿甚するしかないず考えおいたす。
具䜓的には、
1-1. C:\Program Files\Embarcadero\RAD Studio\11.0\bin
\default_app.manifest
を、察象のアプリの゜ヌスのフォルダヌにコピヌ
1-2. 「プロゞェクト」→「オプション」→「アプリケヌション」の
   「ランタむムテヌマ」の項目で 「カスタム マニフェストを䜿甚する」
を遞択し、カスタムマニフェストに先のコピヌした
default_app.manifestを指定する
1-3. マニフェストに、<dpiAware>true</dpiAware>を远蚘する
ここたでするず、OS偎からの認識はSystem DPI Aware以䞊に
倉曎できるず思っおいたす。

マニフェストをあたり倉曎したこずがないため、カスタムマニフェストを
䜿甚した堎合、各OSのテヌマが正しく適甚されるのかがよくわかっおいたせん。
1-1のファむルをベヌスにしおいるので問題ないず考えおよいのでしょうか
教えお䞋さい。

ちなみに、のサむズ調敎に぀いおは
3-1. Screen.PixelsPerInchず、Form.PixelsPerInchを比范しお
蚭蚈時ずの珟圚の比率を蚈算。
K = Screen.PixelsPerInch / Form.PixelsPerInch
3-2. Windowsの暙準解像床は96DPIで、1Pointは1/72むンチであるため
1ポむントのドット数を蚈算するずきは
暙準 フォントサむズ/72*96
高DPIフォントサむズ/72*Screen.PixelsPerInch
3-3. ボタンなどのサむズは、䞊蚘フォントサむズを考慮しお倉曎
3-4. WM_DPICHANGED のメッセヌゞに応じおサむズは、再蚈算必芁
ず考えおいたす。


MLホヌムペヌゞ: https://www.freeml.com/delphi-users

----------------------------------------------------------------------
スマホアプリ版で100䞇ダりンロヌド突砎の
「キャプテン翌ZERO決めろミラクルシュヌト」
HTML5ゲヌムプラットフォヌム「ゲ゜おん byGMO」にお、
PCブラりザ版を奜評配信䞭
https://gesoten.com/games/genre/sports/tsubasa-zero
------------------------------------------------------[freeml byGMO]--

あなたの街のチラシがい぀でも無料で芋攟題
チラシをクリックしおチラシが拡倧されたらポむントゲット♪
たずはかんたん登録♪ -ポむントタりン-
https://www.pointtown.com/ptu/rd.cgi?cid=8912
----------------------------------------------------------------------

kuze

unread,
May 4, 2019, 9:45:22 PM5/4/19
to delphi...@freeml.com
皆様

久䞖です。

1-3の远蚘項目は、正確にはもっず耇雑で
<asmv3:application>
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>True</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>

です。

kuze

unread,
May 9, 2019, 9:57:17 AM5/9/19
to delphi...@freeml.com
皆様

久䞖です。

事埌報告です。
ただ、詊行錯誀䞭ですが、カスタムマニフェストを
䜿甚するこずで、
高DPI環境䞋で、フォントがボケる問題は回避できたした。
あずは、なんずかなりそうです。

なお、カスタムマニフェストは䞋蚘のようにしおいたす。
参考たでにご報告いたしたす。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="DelphiApplication"
version="1.0.0.0"
processorArchitecture="*" />
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*" />
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<dpiAware>True/PM</dpiAware>
</asmv3:windowsSettings>
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<dpiAwareness>PerMonitorV2, PerMonitor</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows Vista and Windows Server 2008 -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
<!-- Windows 7 and Windows Server 2008 R2 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8 and Windows Server 2012 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 8.1 and Windows Server 2012 R2 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!--Windows 10-->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
</assembly>
Reply all
Reply to author
Forward
0 new messages