0

OK、透明度のある PNG-24 を作成しました。これは基本的に、黒と白の代わりに黒と透明の間の「色」を使用するグレースケール画像です。これを行ったのは、これを色付きの四角形の不透明度マスクとして使用できるようにするためです。したがって、単一のグラフィックのみを使用して、必要な色で画像をレンダリングします。

しかし、私の人生では、WPFにda * nイメージのアンチエイリアスを停止させることはできません!!

ブラシが適用される四角形に「SnapesToDevicePixels」を設定しました... ImageBrush のスケールを「なし」に設定しました... ViewPort と ViewBox を絶対単位に設定し、正確にソース画像。しかし、私が何をしようとしても、WPF は物事をスムーズにしようとしているのです! これは非常にイライラします!!!

それで...画像を不透明マスクとして使用する方法を知っている人はいますか?描画したとおりに WPF にレンダリングしてもらいたいだけです。

4

2 に答える 2

2

私はあなたの問題を再現しようとしました。単に次のように:

        <Rectangle Width="200" Height="200" Fill="Red">
            <Rectangle.OpacityMask>
                <ImageBrush ImageSource="/mask.png"/>
            </Rectangle.OpacityMask>
        </Rectangle>

mask.png には、長方形の半分が表示され、残りの半分が 100% 透明であるような単純な対角マスクが含まれています。そして、recangle はピクセル パーフェクト (および必要に応じてエイリアス) をレンダリングします。モニターにネイティブではないDPI設定があり、WPFが画像を正しくレンダリングできないと思います。

于 2011-04-07T11:09:03.133 に答える
1

とった!どういうわけか、簡単に変更する方法がないのはレイアウトの問題です。ただし、それを修正する UseLayoutRounding と呼ばれる設定可能な値があります。ルートレベルで設定しただけです(このフェイクサンプルの場合、グリッド...)

<Grid UseLayoutRounding="True">
    ....
</Grid>

...そしてバム!魔法のように動作します!「SnapsToDevicePixels」のような「並べ替え」ですが、要素の配置用です (つまり、左、幅などのすべてのレイアウト関連の値を丸めますが、SnapsToDevicePixels は、レンダリング時にレイアウトを画面上のピクセルにスナップします)。

M

于 2011-04-07T16:03:05.503 に答える