System.Drawing.Graphicsクラスには、次の2つのオプションを持つCompositionModeプロパティがあります。SourceOver(アルファコンポーネントに基づいて、既存の背景で描画されたものをブレンドします)または描画されているもので背景を単純に上書きするSourceCopy。WPFでアルファブレンドモードを変更しますか?
WPFには何か類似点はありますか?
たとえば、別のPolyLineの上にPolyLineを描画すると、新しいPolyLineは常に背景とアルファベットで表示されます。私はそれが使用されているコンテナから独立していると思う。私はキャンバスを使用していますが、ブレンドモードプロパティはどこにも見つかりませんでした。私がしたいのは、上記のSourceCopyコンポジションモードです。私。新しいPolyLineは既にキャンバス上にあるものを上書きするだけです。
Canvas backbufferにアクセスできないため、Pixel Shaderを使用していない簡単な方法があります(私が理解する限り - とにかく動作しません)。
私はキャンバスにこだわっていないので、上書きモードをサポートしているコンテナを使用してください。
私は現在、System.Drawing.Graphicsコンテキストを取得してからCompositionModeを操作するWriteableBitmapに基づいたソリューションを用意しています。それは機能しますが、私のウィンドウはフルスクリーンであるため、このソリューションはパフォーマンスに重大な影響を与えます。
明確化と例: WPFウィンドウは完全に透明で、キャンバスも背景色(0,0,0,0)です。今度は、Color.FromArgb(128,128,0,0)でPolyLineを描画します。私は今半透明の赤いポリラインを持っています。次に、Color.FromArgb(0,0,0,0)を使って同じPolyLineを描画します。結果はアルファブレンディングのために以前と同じです。しかし、私が望むのは、2番目のポリラインで赤いポリラインが消去されていることです(これは、GraphicsクラスのSourceCopyモードとまったく同じです)。
はい、しかし、私はすべてのアルファ値で背景を上書きする必要があります。私はちょうど私の質問に追加しました。 – Harald