新しい Bitmap オブジェクトを作成しましたが、GDI+ を使用してそれにテキストを描画したいと考えています。そこで、Graphics.DrawString(...) を呼び出します。
問題は、文字列のサイズが Windows 7 の DPI 設定に依存することです。Windows の設定とは無関係にテキスト描画を行う方法はありますか?
PS: DPI 設定はテキストのみに影響するようです。たとえば、DPIを変更すると、四角形は同じサイズになります...
新しい Bitmap オブジェクトを作成しましたが、GDI+ を使用してそれにテキストを描画したいと考えています。そこで、Graphics.DrawString(...) を呼び出します。
問題は、文字列のサイズが Windows 7 の DPI 設定に依存することです。Windows の設定とは無関係にテキスト描画を行う方法はありますか?
PS: DPI 設定はテキストのみに影響するようです。たとえば、DPIを変更すると、四角形は同じサイズになります...
自分で解決策を見つけました。重要なのは、GraphicsUnit.Pixel パラメーターを使用してフォントを作成することです。そうすれば、文字列の描画はシステムの DPI 設定から独立します。
DPI は、デバイスに依存しない単位で測定される描画可能なアイテムのみに影響するという点で正しいです。フォントは通常、1 ポイント = 1/72 インチのポイントで測定されます。したがって、10pt フォントは、すべての画面解像度でインチ単位で同じサイズになり、画面解像度とピクセル密度に応じて、多かれ少なかれピクセルを占有します。
ピクセル単位で測定されるもの (線、形状など) はすべて DPI の影響を受けませんが、実際の物理的なサイズは画面の解像度とピクセル密度によって異なります。フォントをピクセル単位で測定するようにコードを変更すると、すべての画面 DPI 設定でテキストが同じピクセル サイズになることが保証されますが、プリンターで印刷する場合は、プリンターの解像度によってテキスト サイズが異なることがわかります。