← |
2024年11月 |
→ |
日 |
月 |
火 |
水 |
木 |
金 |
土 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
|
26 |
27 |
28 |
29 |
30 |
|
思いっきり引っかかったorz C#のWPF環境で開発したアプリは、デバイス非依存ピクセルが使われる。
Windowsのデフォルトの画面DPIの設定は96dpiとして設定されている。 WPFは標準が96dpiとみなされて開発するので、 WPFで96ピクセルの線を描くと、画面表示は96ピクセルで表示される。
そして、これは、モニターの実際のDPIが96dpiならば、 画面上には物理的に1インチの長さの線が描かれている。
ここで、Windowsの画面DPI設定を120dpiにすると、 WPFで96ピクセルの線を描くと、画面表示は120ピクセルで表示される。 モニターの実際のDPIも120dpiならば、 画面上には物理的に1インチの長さの線が描かれている。
つまり、96dpiの時の大きさを基準に、 WindowsのDPI設定に依存してスケーリングするのが、 デバイス非依存ピクセルって事らしい。
これは、一般的な業務アプリなどでは問題ない。 というか、むしろ、好ましい話ではあるんだけど、 特定の画面解像度(800x600とか1280*800とか)のデバイス専用のアプリや、 ドット単位での描画が重要なアプリを開発するときには困る。
いっそ、組み込みシステム並に、ハードウェアやOSの設定を ガチガチに固められるならばまだマシなのだが、 不特定少数なターゲットで開発する場合に非常に困る。
解決方法は、自分でWindowsの設定のDPIから長さを動的に計算してプログラムするしかないらしい。
そうすると、VisualStudioのWPFウインドウエディタが使えない事になるので、また面倒な話にorz
どうしたものか・・・
|
01:30, Tuesday, Jun 14, 2011 ¦ 固定リンク
¦ 携帯
■コメント
■コメントを書く
※コメントの受け付けは終了しました
|
|