65

SnapsToDevicePixelsWPF 4.0でいつ使用するかについてのガイドラインを提案できる人はいますか?

問題がある場合にのみ、アプリ全体で自由に、特定のコントロールでのみ使用する必要がありますか?

4

4 に答える 4

92

ピクセルをいつ整列させるかについてのスペンサーとマーティンによる良い答え。

方法について: WPF 4.0UseLayoutRoundingでは、の代わりにプロパティを使用する必要があることも指摘しておきSnapsToDevicePixelsます。

UseLayoutRoundingあなたがしていることをSilverlightと互換性のあるものにします(SnapsToDevicePixelsSilverlightでは利用できません)...そしてMicrosoftはそのドキュメントUseLayoutRoundingでoverの使用も奨励しています。SnapsToDevicePixels

2つの違いは何ですか?大きな違いの1つはUseLayoutRounding、レイアウトフェーズでSnapsToDevicePixels発生するのに対し、レンダリングフェーズで発生することです。これにより、おそらくよりパフォーマンスの高い方法であると推測できますUseLayoutRounding(ただし、これは確認していません)。

そうは言っても、を使用する理由はまだありますSnapsToDevicePixels。実際、MSDNのドキュメントは1つを示しています。もう1つ追加SnapsToDevicePixelsします。正確な制御のためのガイドラインを使用できるのはそれだけです。

この問題に関するいくつかのリソース(つまり、画像、テキスト、およびビジュアルによるピクセルスナップと明瞭さ)は次のとおりです。

ふふ。私の答えはあなたが求めていたものより少し多かったことを私は知っています...しかし、この概念(つまり、解像度の独立性とそれがもたらす結果として生じる問題とそれらを克服する方法)は、WPFを使用するときにフラストレーションのポイントになることがよくあります。少なくとも、新しいWPF4.0プロパティを紹介したいと思いますUseLayoutRounding

アップデート

これを何度も見てきたので、追加する必要があります...そうでない場合SnapsToDevicePixelsでも機能することがあります。UseLayoutRoundingなぜそうなるのかを理解できればいいのですが、必ず最初にUseLayoutRoundingを試してみてください。それでもうまくいかない場合は、遠慮なく試してみてくださいSnapsToDevicePixels

その線はとても鋭いのであなたを切ることができます!

于 2010-04-08T17:12:03.800 に答える
8

ピクセルの配置が意味を持つコントロールまたは領域で使用する必要があります。描画アプリケーションのキャンバスに関するコントロールはその一例です。断片化されたドライブのマップを見たことがありますか? これは別の例かもしれません。

私が考えることができる 1 つの例外は、何らかの分割線を使用している場合です。ほとんどの人は、境界線がしっかりしていることを期待しています。この設定がオフの場合、ぼやけて見えにくくなる可能性があります。

基本的に、ぼやけたエッジ=悪い場合はオンにします

于 2010-03-08T07:02:28.087 に答える
7

1 つのケースは、画像またはビデオを表示している場合です。デバイスのピクセル (つまり、ビデオ画面のピクセル) にスナップしない場合、画像のピクセルを画面のピクセルの「間に」配置するために何らかのアルゴリズム (補間、アンチエイリアシング) が使用され、表示されるものが見えなくなります。元の画像と同じくらい良い。画像のシャープネスがいくらか失われます。

于 2010-03-08T07:00:52.313 に答える
3

ボーダーに非常に役立つことに気付きました。追加情報はこちら

<Style TargetType="Border" >
        <Setter Property="SnapsToDevicePixels" Value="True" />
</Style>
于 2015-06-12T14:46:10.713 に答える