ビットマップ効果の概要

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

重要 :重要

.NET Framework 4 以降では、BitmapEffect クラスは使用されなくなりました。BitmapEffect クラスを使用すると、廃止されていることを示す例外が返されます。BitmapEffect クラスの代替としては Effect クラスを使用できます。ほとんどの場合は、Effect クラスを使用した方が高速に処理できます。

このトピックは、次のセクションで構成されています。

  • WPF ビットマップ効果
  • 効果を適用する方法
  • カスタム効果の作成
  • 関連トピック

WPF ビットマップ効果

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

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

  • BlurBitmapEffect は、焦点を外したように見えるオブジェクトをシミュレートします。

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

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

  • BevelBitmapEffect は、指定した曲線に従ってイメージの表面を浮き上がらせる傾斜面を作成します。

  • EmbossBitmapEffectVisual のバンプ マッピングを作成し、人工光源による奥行とテクスチャから得られる印象を生成します。

メモメモ

WPF ビットマップ効果は、ソフトウェア モードで描画されます。効果を適用するすべてのオブジェクトもソフトウェアで描画されます。パフォーマンスが最も低下するのは、ビットマップ効果を大規模なビジュアルやビットマップ効果のアニメーション プロパティに適用した場合です。ビットマップ効果をこのような方法で使用してはならないわけではありませんが、予期したとおりのエクスペリエンスをユーザーが体験することを保証するため、使用する場合は細心の注意を払い、徹底的にテストしてください。

メモメモ

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

効果を適用する方法

BitmapEffectVisual のプロパティです。 したがって、ButtonImageDrawingVisualUIElement などのビジュアルに効果を適用するのは、プロパティを設定するのと同様に簡単です。 BitmapEffect は 1 つの BitmapEffect オブジェクトに設定できます。また、BitmapEffectGroup オブジェクトを使用して、複数の効果を連結することもできます。

Extensible Application Markup Language (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;
メモメモ

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

カスタム効果の作成

WPF は、マネージ WPF アプリケーションで使用できるカスタム効果を作成するために、アンマネージ インターフェイスも提供します。 カスタム ビットマップ効果の作成に関する追加リファレンス資料については、「アンマネージ WPF ビットマップ効果」を参照してください。

参照

参照

BitmapEffectGroup

BitmapEffectInput

BitmapEffectCollection

Unmanaged WPF Bitmap Effect

概念

イメージングの概要

セキュリティ (WPF)

WPF グラフィックス レンダリングの概要

パフォーマンスの最適化 : 2D グラフィックスとイメージング