ビットマップ効果を使用すると、デザイナーや開発者は、レンダリングされた Windows Presentation Foundation (WPF) コンテンツに視覚効果を適用できます。 たとえば、ビットマップ効果を使用すると、画像やボタンに DropShadowBitmapEffect 効果やぼかし効果を簡単に適用できます。
重要
.NET Framework 4 以降では、BitmapEffect クラスは廃止されています。 BitmapEffect クラスを使用しようとすると、古い例外が発生します。 BitmapEffectクラスの非廃止代替は、Effectクラスです。 ほとんどの場合、Effect クラスの方が大幅に高速です。
WPF ビットマップ効果
ビットマップ効果 (BitmapEffect オブジェクト) は、単純なピクセル処理操作です。 ビットマップ効果は、入力として BitmapSource を受け取り、ぼかしや影などの効果を適用した後に新しい BitmapSource を生成します。 各ビットマップ効果は、RadiusのBlurBitmapEffectなど、フィルター処理プロパティを制御できるプロパティを公開します。
特殊なケースとして、WPF では、VisualやButtonなどのライブ TextBox オブジェクトのプロパティとして効果を設定できます。 ピクセル処理は、実行時に適用およびレンダリングされます。 この場合、レンダリング時に、 Visual は自動的に同等の BitmapSource に変換され、 BitmapEffectへの入力として供給されます。 出力は、 Visual オブジェクトの既定のレンダリング動作を置き換えます。 このため、 BitmapEffect オブジェクトは、エフェクトが適用されたときにビジュアルにハードウェア アクセラレーションを適用しない、つまり、ソフトウェアでのみビジュアルをレンダリングするように強制します。
BlurBitmapEffect は、フォーカス外に表示されるオブジェクトをシミュレートします。
OuterGlowBitmapEffect は、オブジェクトの周囲に色のハローを作成します。
DropShadowBitmapEffect は、オブジェクトの背後に影を作成します。
BevelBitmapEffect は、指定した曲線に従ってイメージの表面を盛り上げるような面取りを作成します。
EmbossBitmapEffect は、Visual のバンプ マッピングを作成し、人工光源によって奥行きとテクスチャがあるような印象を与えます。
注
WPF ビットマップ効果はソフトウェア モードでレンダリングされます。 効果を適用するオブジェクトもソフトウェアでレンダリングされます。 大きなビジュアルでビットマップ効果を使用したり、ビットマップ効果のプロパティをアニメーション化したりすると、パフォーマンスが最も低下します。 これは、この方法でビットマップ効果をまったく使用すべきではないというわけではありませんが、ユーザーが期待するエクスペリエンスを得られるように十分に注意してテストする必要があります。
注
WPF ビットマップ効果は、部分信頼実行をサポートしていません。 ビットマップ効果を使用するには、アプリケーションに完全信頼アクセス許可が必要です。
効果を適用する方法
BitmapEffect は、 Visualのプロパティです。 そのため、 Button、 Image、 DrawingVisual、 UIElementなど、ビジュアルに効果を適用することは、プロパティを設定するのと同じくらい簡単です。 BitmapEffect は、1 つの BitmapEffect オブジェクトに設定することも、 BitmapEffectGroup オブジェクトを使用して複数の効果を連結することもできます。
次の例では、拡張アプリケーション マークアップ言語 (XAML) で BitmapEffect を適用する方法を示します。
<Button Width="200">You Can't Read This!
<Button.BitmapEffect>
<!-- <BitmapEffectGroup> would go here if you wanted to apply more
then one effect to the Button. However, in this example only
one effect is being applied so BitmapEffectGroup does not need
to be included. -->
<!-- The larger the Radius, the more blurring. The default range is 20.
In addition, the KernelType is set to a box kernel. A box kernel
creates less disruption (less blur) then the default Gaussian kernel. -->
<BlurBitmapEffect Radius="10" KernelType="Box" />
</Button.BitmapEffect>
</Button>
次の例では、コードで BitmapEffect を適用する方法を示します。
// Get a reference to the Button.
Button myButton = (Button)sender;
// Initialize a new BlurBitmapEffect that will be applied
// to the Button.
BlurBitmapEffect myBlurEffect = new BlurBitmapEffect();
// Set the Radius property of the blur. This determines how
// blurry the effect will be. The larger the radius, the more
// blurring.
myBlurEffect.Radius = 10;
// Set the KernelType property of the blur. A KernalType of "Box"
// creates less blur than the Gaussian kernal type.
myBlurEffect.KernelType = KernelType.Box;
// Apply the bitmap effect to the Button.
myButton.BitmapEffect = myBlurEffect;
注
BitmapEffectやDockPanelなど、レイアウト コンテナーにCanvasが適用されると、その効果は、そのすべての子要素を含む要素またはビジュアルのビジュアル ツリーに適用されます。
カスタム効果の作成
また、WPF には、マネージド WPF アプリケーションで使用できるカスタム効果を作成するためのアンマネージ インターフェイスも用意されています。 カスタム ビットマップ効果を作成するためのその他のリファレンス 資料については、 アンマネージ WPF ビットマップ効果 のドキュメントを参照してください。
こちらも参照ください
.NET Desktop feedback