ウィンドウの左右について、それぞれ上がVisual Studio 2013、下がVisual Studio "14" CTP3で、DPI 150%の状態。
確かにアイコンが変わっている。ただ輪郭がまだぼけているところを見るに、たぶんリソースにラスターデータの画像ファイルを持っていて(Visual Studio Image Libraryには以前からサイズ別の画像が用意されている)、起動時にDPIを見て適当なサイズのものをImageコントロールに読み込み、それをImageコントロールが自動リサイズしているのではないかと思う。
一方、タイトルバーにある「通知」と「フィードバック」のアイコンは以前から高DPIに対応していて、
ちなみに、ベクターデータだから輪郭がぼけないということはなくて、論理的な描画位置が実数(Double)で管理されているのに対して、実際に表示するピクセルは整数なので、その間に端数が生じるとぼけの原因になる。これはアプリを高DPI化するには避けて通れない問題で、DPI 100%ではきっちり整数で合わせていても、拡大/縮小すると端数が必然的に出てくる。
これを抑止するには描画位置をピクセルに合わせて整数になるよう寄せてやる必要があって、そのために使えるプロパティが色々ある。
- UIElement.SnapsToDevicePixels="True"
- FrameworkElement.UseLayoutRounding="True"
- RenderOptions.BitmapScalingMode="NearestNeighbor"
- RenderOptions.EdgeMode="Aliased"
[修正]
タイトルバーのアイコンについて、こちらもラスターデータの画像によるものと修正した。
0 件のコメント:
コメントを投稿