次の方法で共有


ビットマップ効果の概要

ビットマップ効果を使用すると、デザイナーや開発者は、レンダリングされた Windows Presentation Foundation (WPF) コンテンツに視覚効果を適用できます。 たとえば、ビットマップ効果を使用すると、DropShadowBitmapEffect 効果やぼかし効果を画像やボタンに簡単に適用できます。

重要

.NET Framework 4 以降では、BitmapEffect クラスは廃止されています。 BitmapEffect クラスを使用しようとすると、古い例外が発生します。 BitmapEffect クラスの非廃止代替は Effect クラスです。 ほとんどの場合、Effect クラスの方が大幅に高速です。

WPF ビットマップ効果

ビットマップ効果 (BitmapEffect オブジェクト) は、単純なピクセル処理操作です。 ビットマップ効果は入力として BitmapSource を受け取り、ぼかしや影などの効果を適用した後に新しい BitmapSource を生成します。 各ビットマップ効果は、BlurBitmapEffectRadius など、フィルター処理プロパティを制御できるプロパティを公開します。

特殊なケースとして、WPF では、エフェクトは、ButtonTextBoxなどのライブ Visual オブジェクトのプロパティとして設定できます。 ピクセル処理は、実行時に適用およびレンダリングされます。 この場合、レンダリング時に、Visual は自動的に同等の BitmapSource に変換され、BitmapEffectへの入力として供給されます。 出力は、Visual オブジェクトの既定のレンダリング動作を置き換えます。 このため、BitmapEffect オブジェクトは、エフェクトが適用されたときにビジュアルにハードウェア アクセラレーションを適用しない、つまり、ソフトウェアでのみビジュアルをレンダリングするように強制します。

  • BlurBitmapEffect は、フォーカス外に表示されるオブジェクトをシミュレートします。

  • OuterGlowBitmapEffect は、オブジェクトの周囲に色のハローを作成します。

  • DropShadowBitmapEffect オブジェクトの背後に影を作成します。

  • BevelBitmapEffect は、指定した曲線に従ってイメージの表面を持ち上げる面取りを行います。

  • EmbossBitmapEffect は、Visual のバンプ マッピングを作成し、人工光源からの奥行きとテクスチャを感じさせる印象を与えます。

手記

WPF ビットマップ効果はソフトウェア モードでレンダリングされます。 効果を適用するオブジェクトもソフトウェアでレンダリングされます。 大きなビジュアルでビットマップ効果を使用したり、ビットマップ効果のプロパティをアニメーション化したりすると、パフォーマンスが最も低下します。 これは、この方法でビットマップ効果をまったく使用すべきではないというわけではありませんが、ユーザーが期待するエクスペリエンスを得られるように十分に注意してテストする必要があります。

手記

WPF ビットマップ効果では、部分的な信頼のもとでの実行はサポートされていません。 ビットマップ効果を使用するには、アプリケーションに完全信頼アクセス許可が必要です。

効果を適用する方法

BitmapEffect は、Visualのプロパティです。 したがって、ButtonImageDrawingVisualUIElementなどの効果をビジュアルに適用することは、プロパティの設定と同じくらい簡単です。 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;

手記

DockPanelCanvasなど、レイアウト コンテナーに BitmapEffect が適用されると、効果は要素またはビジュアルのビジュアル ツリー (そのすべての子要素を含む) に適用されます。

カスタム効果の作成

また、WPF には、マネージド WPF アプリケーションで使用できるカスタム効果を作成するためのアンマネージ インターフェイスも用意されています。 カスタム ビットマップ効果を作成するためのその他のリファレンス 資料については、アンマネージ WPF ビットマップ効果 ドキュメントを参照してください。

関連項目