C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

FontDialogが選択したフォントサイズと異なる値を返す /アブサン (24/10/08(Tue) 16:59) #103335
Re[1]: FontDialogが選択したフォントサイズと異なる値を返す /とっちゃん (24/10/08(Tue) 21:37) #103336
  └ Re[2]: FontDialogが選択したフォントサイズと異なる値を返す /アブサン (24/10/09(Wed) 09:22) #103337
    └ Re[3]: FontDialogが選択したフォントサイズと異なる値を返す /アブサン (24/10/09(Wed) 15:06) #103338 解決済み


親記事 / ▼[ 103336 ]
■103335 / 親階層)  FontDialogが選択したフォントサイズと異なる値を返す
□投稿者/ アブサン (1回)-(2024/10/08(Tue) 16:59:19)

分類:[C#] 

こんにちは

C# + .Net8 WinForm で開発しています。

FontDialog を使用しているのですが
Windows OSのディスプレイ設定で拡大率を100%以外に変更すると
FontDialog に渡したフォントサイズと異なる値が選択され
ユーザ操作により選択したフォントサイズと異なる値が返ります。

例えば9ptを渡すと7ptが選択されます。
画面で9ptを選択すると11.25ptが返ります。

DPIに依存した値に勝手に変換されてしまっている???

FontDialog のプロパティを調べてみても該当する設定を
見つけられませんでした。

回避方法をお教えいただきたいです。
よろしくお願いします。
[ □ Tree ] 返信 編集キー/

▲[ 103335 ] / ▼[ 103337 ]
■103336 / 1階層)  Re[1]: FontDialogが選択したフォントサイズと異なる値を返す
□投稿者/ とっちゃん (834回)-(2024/10/08(Tue) 21:37:15)
No103335 (アブサン さん) に返信
> DPIに依存した値に勝手に変換されてしまっている???
>
そうです。
pt を画面DPIの倍率で再算出した値を設定する必要があります。
多分リファレンスされてないんじゃないかな?
昔 API で使っていて、それっぽいドキュメントは見つけられなかった。


> 回避方法をお教えいただきたいです。

FontDialog にわたすフォントのサイズを
FontSize * 72 / 画面DPI で計算しなおして渡せば
意図した値になると思います。

[ 親 103335 / □ Tree ] 返信 編集キー/

▲[ 103336 ] / ▼[ 103338 ]
■103337 / 2階層)  Re[2]: FontDialogが選択したフォントサイズと異なる値を返す
□投稿者/ アブサン (2回)-(2024/10/09(Wed) 09:22:33)
No103336 (とっちゃん さん) に返信

ご回答ありがとうございます。
試してみます!

とっちゃんさんには、はるか昔にも大変お世話になったことがあります。
本当に助かります!

[ 親 103335 / □ Tree ] 返信 編集キー/

▲[ 103337 ] / 返信無し
■103338 / 3階層)  Re[3]: FontDialogが選択したフォントサイズと異なる値を返す
□投稿者/ アブサン (3回)-(2024/10/09(Wed) 15:06:51)
No103336 (とっちゃん さん) に返信

DPI計算で期待値となりました。
ありがとうございました。
解決済み
[ 親 103335 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -