モンクのブログ -3ページ目

モンクのブログ

WPFについて、デザイナーの視点から書いていきたいなと。
サンプルなんかも上げたりして。でもモンクだらけになりそうな・・・。

WPFで構築したプログラムをXPで表示させるには、様々な注意が必要なのですが、重要なのは2点だと思います。


1.ウインドウ枠に対しallowtransparency="true"をかけるとプログラムの動作が非常に重くなる
2.フォントの表示に関する解釈が今までのプログラムと違う

1に関しては後日不満をぶちまけますが、2に関して今日ネットで調べた情報。

WPFのフォント解釈は自動的にアンチエイリアスがかかります。

(1)理由
 論理座標に色を配置する為。

(2)どういうことが起こるの?
 標準のフォントがMSゴシックしか選べない状態でプログラムを表示させると
 アンチエイリアスのかかったMSゴシックしか表示できない。
 →配布するプログラムがXPを対象環境として認めている場合、
 上記フォントでの表示を覚悟せざるを得ないということです。

 唯一メイリオでの表示は何故か綺麗。ですがメイリオの再配布は認められていないので、
 プログラムに対する埋め込みはできません。

 つまり強制的にメイリオでの表示に変更させることもできません。

(3)解決方法
 代替フォントにメイリオに近い見え方をするフォントを設定するという方法はありますが、
 あまり企業ユースのソフトでは使いたくない・・。

 これを根本的に解決する方法は現在は無いと判断しています。


 →WPF4からはTrueTypeの埋め込みビットマップフォントが使用されるため解決されるという表明が
 Microsoftからあったそうですが・・。やってみないとわかりませんね。


格段に改善された・・と説明を受けたのに・・。しょぼん






WPFの画像の表示はブラウザでの画像表示に慣れた私にとっては少し変わった仕様になっていると感じます。

私の解釈が一部入るのですが、
普通に表示させると、必ずぼけたような状態になるんです。
個人的にこれをピクセルずれと呼んでいます。

ピクセルずれが起こる条件は以下
1.IMAGEコントロールはデフォルトでstretchプロパティの値がfillになっている。この状態では画像の表示大きさは親要素に決定されてしまう。
2.論理座標が整数でない場合、snapstodevicepixels=trueを設定してもピクセルずれがおこる

つまり、IMAGEコントロールで画像を正確に表示させるには

1.stretchプロパティをnoneに設定する
2.論理座標が整数になるように設定する

ということになります。
他の方法は調査中ですが、何かを意図してこういう仕様にしているのでしょうか?よくわかりません。

小さいアイコン画像等は正確に表示してあげないと
デザイナーの意図した表示にならないと思うのですが、、。

iPhoneからの投稿
昨日に引き続き、文句です。言っても仕方ないけど。

WPFのうたい文句の一つに、デザインとコードの分離というのがあります。

これが今ひとつ完全な形ではないと感じてしまうのです。
理由はXAMLだけで表現出来る範囲の限界にあります。例えばXAML上で表現出来るアニメーションは単純なものになってしまいますが、コードを作り込むとそれなりに動的な動きが可能になります。
この時の領域が非常に曖昧。もちろん作業者でルールを作れば済む話ですけどね。

デザイナーがそこまでやんのかどうかも微妙です。何よりもXAML上で表現出来る範囲をもっと広く、簡単にして欲しい。

何せマイクロソフトの説明を受けた時、フラッシュ以上の表現が可能と聞いていたので、、、

iPhoneからの投稿