次の方法で共有


ビットマップ効果の概要

更新 : 2007 年 11 月

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

このトピックには次のセクションが含まれています。

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

WPF ビットマップ効果

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

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

ms743435.alert_note(ja-jp,VS.90).gifメモ :

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

ms743435.alert_note(ja-jp,VS.90).gifメモ :

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;

BitmapEffectGroup オブジェクトを使用して複数の効果を適用する方法を示す例については、「方法 : 複数の視覚効果を作成する」を参照してください。

ms743435.alert_note(ja-jp,VS.90).gifメモ :

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

カスタム効果の作成

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

カスタム ビットマップ効果のサンプルについては、「カスタム BitmapEffect のサンプル - RGBFilter」を参照してください。このサンプルでは、カスタム効果、マネージ相互運用レイヤ、カスタム効果を使用する WPF アプリケーションを作成するために必要なアンマネージ インターフェイスを示します。

参照

処理手順

方法 : ぼかし視覚効果をアニメーション化する

方法 : グロー効果をアニメーション化する

方法 : ドロップ シャドウ視覚効果をアニメーション化する

方法 : ベベル視覚効果をアニメーション化する

方法 : エンボス視覚効果をアニメーション化する

概念

イメージングの概要

Windows Presentation Foundation のセキュリティ

Windows Presentation Foundation のグラフィックス レンダリングの概要

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

参照

BitmapEffectGroup

BitmapEffectInput

BitmapEffectCollection

Unmanaged WPF Bitmap Effect