トップページ > 記事閲覧
高Dpi対応について
名前:Marshal 日時: 2020/07/30 16:14

管理人様 いつもお世話になっております。 96Dpi以外の高Dpiに対応した文字関連のAPI等は特に用意されておりませんでしょうか? OSスケーリングにて100%を超えるScalの場合に、フォントとフォントの行間、幅などが狭かったり広かったりするため、 逐一描画する度にすべてのフォント間の値を微調整する必要があり、煩わしく感じています。 何か手立てはあるものでしょうか?
メンテ

Page: 1 |

Re: 高Dpi対応について ( No.1 )
名前:kanamaru 日時:2020/07/30 17:51

そう簡単にはいかないようです。 HWND hMainWnd = GetMainWindowHandle(); HDC hdc = GetDC(hMainWnd); SetProcessDPIAware(); int XDPI = GetDeviceCaps(hdc, LOGPIXELSX); SetWindowSizeExtendRate(XDPI/96); int wx=640,wy=480; SetGraphMode(wx*XDPI/96,wy*XDPI/96,32); SetWindowSize(wx*XDPI/96,wy*XDPI/96); ReleaseDC(hMainWnd,hdc); で自動で調整してくれるかと思ったら(DxLib_Initの後に書きました) うまくいきません。 実行結果を見た感じ、ウィンドウは拡大していると思うのですが、 描画が拡大してない?ように感じます。 試してませんが SetWindowSizeExtendRate使わずに座標指定するときにすべてXDPI/96をかければうまくいくかもしれません。 ここには書いてないですが、 SetWindowSizeExtendRateは裏画面じゃないといけないらしいので裏画面にいったん描画して表画面には転送してるのですが。
メンテ
Re: 高Dpi対応について ( No.2 )
名前:kanamaru 日時:2020/07/30 17:53

ちなみに僕のプログラムはxとyで拡大率が一緒であることが前提となっています。 (僕の環境ではそうでしたし、SetWindowSizeExtendRateは縦横で倍率を変えることはできないみたいなので。)
メンテ
Re: 高Dpi対応について ( No.3 )
名前:管理人 日時:2020/07/31 01:59

DXライブラリ Ver3.21f で高Dpiの環境でも96Dpiの場合と同じ大きさでウィンドウが表示されるように 処理を変更したはずですが、Marshalさんは独自に高Dpiの対応をされようとしているのでしょうか?
メンテ
Re: 高Dpi対応について ( No.4 )
名前:Marshal 日時:2020/07/31 14:59

管理人様 いくつかDPI(スケーリング)を変更して、動作確認しましたところ、DPIによる問題ではありませんでした。 結果的には、画面解像度とDrawStringする際の位置(ピクセル)による問題であるとわかりました。 また、何かDPI関連で不明点などがありましたら、教えて頂くかもしれません。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存