SnapsToDevicePixels
WPF 4.0でいつ使用するかについてのガイドラインを提案できる人はいますか?
問題がある場合にのみ、アプリ全体で自由に、特定のコントロールでのみ使用する必要がありますか?
SnapsToDevicePixels
WPF 4.0でいつ使用するかについてのガイドラインを提案できる人はいますか?
問題がある場合にのみ、アプリ全体で自由に、特定のコントロールでのみ使用する必要がありますか?
ピクセルをいつ整列させるかについてのスペンサーとマーティンによる良い答え。
方法について: WPF 4.0UseLayoutRounding
では、の代わりにプロパティを使用する必要があることも指摘しておきSnapsToDevicePixels
ます。
UseLayoutRounding
あなたがしていることをSilverlightと互換性のあるものにします(SnapsToDevicePixels
Silverlightでは利用できません)...そしてMicrosoftはそのドキュメントUseLayoutRounding
でoverの使用も奨励しています。SnapsToDevicePixels
2つの違いは何ですか?大きな違いの1つはUseLayoutRounding
、レイアウトフェーズでSnapsToDevicePixels
発生するのに対し、レンダリングフェーズで発生することです。これにより、おそらくよりパフォーマンスの高い方法であると推測できますUseLayoutRounding
(ただし、これは確認していません)。
そうは言っても、を使用する理由はまだありますSnapsToDevicePixels
。実際、MSDNのドキュメントは1つを示しています。もう1つ追加SnapsToDevicePixels
します。正確な制御のためのガイドラインを使用できるのはそれだけです。
この問題に関するいくつかのリソース(つまり、画像、テキスト、およびビジュアルによるピクセルスナップと明瞭さ)は次のとおりです。
ふふ。私の答えはあなたが求めていたものより少し多かったことを私は知っています...しかし、この概念(つまり、解像度の独立性とそれがもたらす結果として生じる問題とそれらを克服する方法)は、WPFを使用するときにフラストレーションのポイントになることがよくあります。少なくとも、新しいWPF4.0プロパティを紹介したいと思いますUseLayoutRounding
。
アップデート
これを何度も見てきたので、追加する必要があります...そうでない場合SnapsToDevicePixels
でも機能することがあります。UseLayoutRounding
なぜそうなるのかを理解できればいいのですが、必ず最初にUseLayoutRoundingを試してみてください。それでもうまくいかない場合は、遠慮なく試してみてくださいSnapsToDevicePixels
。
その線はとても鋭いのであなたを切ることができます!
ピクセルの配置が意味を持つコントロールまたは領域で使用する必要があります。描画アプリケーションのキャンバスに関するコントロールはその一例です。断片化されたドライブのマップを見たことがありますか? これは別の例かもしれません。
私が考えることができる 1 つの例外は、何らかの分割線を使用している場合です。ほとんどの人は、境界線がしっかりしていることを期待しています。この設定がオフの場合、ぼやけて見えにくくなる可能性があります。
基本的に、ぼやけたエッジ=悪い場合はオンにします
1 つのケースは、画像またはビデオを表示している場合です。デバイスのピクセル (つまり、ビデオ画面のピクセル) にスナップしない場合、画像のピクセルを画面のピクセルの「間に」配置するために何らかのアルゴリズム (補間、アンチエイリアシング) が使用され、表示されるものが見えなくなります。元の画像と同じくらい良い。画像のシャープネスがいくらか失われます。
ボーダーに非常に役立つことに気付きました。追加情報はこちら。
<Style TargetType="Border" >
<Setter Property="SnapsToDevicePixels" Value="True" />
</Style>