D3DImage クラス

定義

ユーザーが作成した Direct3D サーフェスを表示する ImageSource

public ref class D3DImage : System::Windows::Media::ImageSource
public class D3DImage : System.Windows.Media.ImageSource
type D3DImage = class
    inherit ImageSource
Public Class D3DImage
Inherits ImageSource
継承

次のコード例は、XAML で D3DImage を宣言する方法を示しています。 既定の XAML 名前空間には含まれていないため、 System.Windows.Interop 名前空間をマップする必要があります。 詳細については、「チュートリアル: WPFでの Direct3D9 コンテンツのホスト」を参照してください。

    <Window x:Class="D3DHost.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:i="clr-namespace:System.Windows.Interop;assembly=PresentationCore"
    Title="MainWindow" Height="300" Width="300" Background="PaleGoldenrod">
    <Grid>
        <Image x:Name="imgelt">
            <Image.Source>
                <i:D3DImage x:Name="d3dimg" />
            </Image.Source>
        </Image>
    </Grid>
</Window>

注釈

D3DImage クラスを使用して、Windows Presentation Foundation (WPF) アプリケーションで Direct3D コンテンツをホストします。

Lock メソッドを呼び出して、D3DImageによって表示される Direct3D コンテンツを変更します。 SetBackBuffer メソッドを呼び出して、Direct3D サーフェスをD3DImageに割り当てます。 AddDirtyRect メソッドを呼び出して、Direct3D サーフェスの更新を追跡します。 Unlock メソッドを呼び出して、変更された領域を表示します。

D3DImage クラスは、バック バッファーとフロント バッファーと呼ばれる 2 つの表示バッファーを管理します。 バック バッファーは Direct3D サーフェスです。 バック バッファーへの変更は、 Unlock メソッドを呼び出すとフロント バッファーに転送され、ハードウェアに表示されます。 場合によっては、フロント バッファーが使用できなくなります。 この可用性の欠如は、画面ロック、全画面表示専用 Direct3D アプリケーション、ユーザー切り替え、またはその他のシステム アクティビティが原因で発生する可能性があります。 これが発生すると、WPF アプリケーションは IsFrontBufferAvailableChanged イベントを処理することによって通知されます。 アプリケーションがフロント バッファーに応答して使用できなくなる方法は、WPF がソフトウェア レンダリングにフォールバックできるかどうかによって異なります。 SetBackBuffer メソッドには、WPF がソフトウェア レンダリングにフォールバックするかどうかを指定するパラメーターを受け取るオーバーロードがあります。

WPF がソフトウェア レンダリングにフォールバックしないときに使用できないフロント バッファーに応答する

SetBackBuffer(D3DResourceType, IntPtr)オーバーロードを呼び出すか、SetBackBuffer(D3DResourceType, IntPtr, Boolean)パラメーターをenableSoftwareFallbackに設定してfalseオーバーロードを呼び出すと、フロント バッファーが使用できなくなったときに、レンダリング システムはバック バッファーへの参照を解放し、何も表示されません。 フロント バッファーが再び使用可能になると、レンダリング システムは WPF アプリケーションに通知するために IsFrontBufferAvailableChanged イベントを発生させます。 IsFrontBufferAvailableChanged イベントのイベント ハンドラーを作成して、有効な Direct3D サーフェスでレンダリングを再開できます。 レンダリングを再開するには、 SetBackBufferを呼び出す必要があります。

WPF がソフトウェア レンダリングにフォールバックしたときに使用できないフロント バッファーに応答する

SetBackBuffer(D3DResourceType, IntPtr, Boolean) パラメーターを enableSoftwareFallback に設定して true オーバーロードを呼び出すと、フロント バッファーが使用できなくなったときにレンダリング システムはバック バッファーへの参照を保持するため、フロント バッファーが再度使用可能になったときにSetBackBufferを呼び出す必要はありません。 ユーザーのデバイスが使用できなくなる場合があります。 その場合は、 SetBackBuffer を呼び出して、WPF のバック バッファーへの参照を解放します。 デバイスをリセットする必要がある場合は、SetBackBuffer パラメーターを backBuffer に設定してnullを呼び出し、SetBackBuffer有効な Direct3D サーフェスに設定してbackBufferをもう一度呼び出します。

Note

パフォーマンスは、Direct3D サーフェスの設定によって大きく異なります。 詳細については、「パフォーマンスに関する Direct3D9 と WPF の相互運用性に関する考慮事項」を参照してください。

Note

D3DImage クラスは、を呼び出し、 パラメーターにを指定しない限り、リモート デスクトップ接続などのソフトウェアで WPF がレンダリングされるときに Direct3D コンテンツを表示しません。

コンストラクター

名前 説明
D3DImage()

D3DImage クラスの新しいインスタンスを初期化します。

D3DImage(Double, Double)

指定した表示解像度を使用して、 D3DImage クラスの新しいインスタンスを初期化します。

フィールド

名前 説明
IsFrontBufferAvailableProperty

IsFrontBufferAvailable依存関係プロパティを識別します。

プロパティ

名前 説明
CanFreeze

オブジェクトを変更不可にできるかどうかを示す値を取得します。

(継承元 Freezable)
DependencyObjectType

このインスタンスの CLR 型をラップする DependencyObjectType を取得します。

(継承元 DependencyObject)
Dispatcher

このDispatcherが関連付けられているDispatcherObjectを取得します。

(継承元 DispatcherObject)
HasAnimatedProperties

1 つ以上の AnimationClock オブジェクトがこのオブジェクトの依存関係プロパティのいずれかに関連付けられているかどうかを示す値を取得します。

(継承元 Animatable)
Height

D3DImageの高さを取得します。

IsFrontBufferAvailable

フロント バッファーが存在するかどうかを示す値を取得します。

IsFrozen

オブジェクトが現在変更可能かどうかを示す値を取得します。

(継承元 Freezable)
IsSealed

このインスタンスが現在シールされているかどうかを示す値を取得します (読み取り専用)。

(継承元 DependencyObject)
Metadata

イメージ ソースに関連付けられているメタデータを取得します。

PixelHeight

D3DImageの高さをピクセル単位で取得します。

PixelWidth

D3DImageの幅をピクセル単位で取得します。

Width

D3DImageの幅を取得します。

メソッド

名前 説明
AddDirtyRect(Int32Rect)

変更されたバック バッファーの領域を指定します。

ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

指定したAnimationClockDependencyPropertyを適用します。 プロパティが既にアニメーション化されている場合は、指定した HandoffBehavior が使用されます。

(継承元 Animatable)
ApplyAnimationClock(DependencyProperty, AnimationClock)

指定したAnimationClockDependencyPropertyを適用します。 プロパティが既にアニメーション化されている場合は、 SnapshotAndReplace ハンドオフ動作が使用されます。

(継承元 Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

指定した DependencyPropertyにアニメーションを適用します。 アニメーションは、次のフレームがレンダリングされるときに開始されます。 指定したプロパティが既にアニメーション化されている場合は、指定した HandoffBehavior が使用されます。

(継承元 Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline)

指定した DependencyPropertyにアニメーションを適用します。 アニメーションは、次のフレームがレンダリングされるときに開始されます。 指定したプロパティが既にアニメーション化されている場合は、 SnapshotAndReplace ハンドオフ動作が使用されます。

(継承元 Animatable)
CheckAccess()

呼び出し元のスレッドがこの DispatcherObjectにアクセスできるかどうかを判断します。

(継承元 DispatcherObject)
ClearValue(DependencyProperty)

プロパティのローカル値をクリアします。 クリアするプロパティは、 DependencyProperty 識別子によって指定されます。

(継承元 DependencyObject)
ClearValue(DependencyPropertyKey)

読み取り専用プロパティのローカル値をクリアします。 クリアするプロパティは、 DependencyPropertyKeyによって指定されます。

(継承元 DependencyObject)
Clone()

この D3DImage オブジェクトの変更可能な複製を作成し、このオブジェクトの値の詳細コピーを作成します。 依存関係プロパティをコピーする場合、このメソッドはリソース参照とデータ バインディング (解決されなくなった可能性があります) をコピーしますが、アニメーションやその現在の値はコピーしません。

CloneCore(Freezable)

基本 (アニメーション化されていない) プロパティ値を使用して、インスタンスを指定した Freezable の複製 (ディープ コピー) にします。

CloneCurrentValue()

この D3DImage オブジェクトの変更可能な複製を作成し、このオブジェクトの現在の値の詳細コピーを作成します。 リソース参照、データ バインディング、アニメーションはコピーされませんが、現在の値がコピーされます。

CloneCurrentValueCore(Freezable)

現在のプロパティ値を使用して、インスタンスを指定した Freezable の変更可能な複製 (ディープ コピー) にします。

CoerceValue(DependencyProperty)

指定した依存関係プロパティの値を強制します。 これは、呼び出し元のCoerceValueCallbackに存在する依存関係プロパティのプロパティ メタデータで指定されたDependencyObject関数を呼び出すことによって実現されます。

(継承元 DependencyObject)
CopyBackBuffer()

D3DImageのソフトウェア コピーを作成します。

CreateInstance()

Freezable クラスの新しいインスタンスを初期化します。

(継承元 Freezable)
CreateInstanceCore()

派生クラスで実装された場合は、 D3DImage 派生クラスの新しいインスタンスを作成します。

Equals(Object)

指定された DependencyObject が現在の DependencyObjectと等しいかどうかを判断します。

(継承元 DependencyObject)
Finalize()

ガベージ コレクションによって D3DImage が回収される前に、リソースを解放し、その他のクリーンアップ操作を実行します。

Freeze()

現在のオブジェクトを変更不可にし、その IsFrozen プロパティを trueに設定します。

(継承元 Freezable)
FreezeCore(Boolean)

D3DImageを変更不可にするか、変更不可にできるかどうかを判断します。

GetAnimationBaseValue(DependencyProperty)

指定した DependencyPropertyのアニメーション化されていない値を返します。

(継承元 Animatable)
GetAsFrozen()

基本 (アニメーション化されていない) プロパティ値を使用して、 Freezableの固定コピーを作成します。 コピーは固定されているため、固定されたサブオブジェクトは参照によってコピーされます。

(継承元 Freezable)
GetAsFrozenCore(Freezable)

基本 (アニメーション化されていない) プロパティ値を使用して、インスタンスを指定した Freezable の固定複製にします。

GetCurrentValueAsFrozen()

現在のプロパティ値を使用して、 Freezable の固定コピーを作成します。 コピーは固定されているため、固定されたサブオブジェクトは参照によってコピーされます。

(継承元 Freezable)
GetCurrentValueAsFrozenCore(Freezable)

現在のインスタンスを、指定した Freezableの固定複製にします。 オブジェクトにアニメーション化された依存関係プロパティがある場合は、現在のアニメーション化された値がコピーされます。

GetHashCode()

この DependencyObjectのハッシュ コードを取得します。

(継承元 DependencyObject)
GetLocalValueEnumerator()

この DependencyObjectでローカルに値が設定されている依存関係プロパティを決定するための特殊な列挙子を作成します。

(継承元 DependencyObject)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetValue(DependencyProperty)

DependencyObjectのこのインスタンスの依存関係プロパティの現在の有効な値を返します。

(継承元 DependencyObject)
InvalidateProperty(DependencyProperty)

指定した依存関係プロパティの有効な値を再評価します。

(継承元 DependencyObject)
Lock()

D3DImageをロックし、バック バッファーに対する操作を有効にします。

MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
OnChanged()

現在の Freezable オブジェクトが変更されたときに呼び出されます。

(継承元 Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

このメンバーは、Windows Presentation Foundation (WPF) インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

設定したばかりの DependencyObjectType データ メンバーに対して適切なコンテキスト ポインターが確立されるようにします。

(継承元 Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

DependencyObjectOnPropertyChanged(DependencyPropertyChangedEventArgs)実装をオーバーライドして、Changed型の依存関係プロパティの変化に応じてFreezable ハンドラーも呼び出します。

(継承元 Freezable)
ReadLocalValue(DependencyProperty)

依存関係プロパティが存在する場合は、そのローカル値を返します。

(継承元 DependencyObject)
ReadPreamble()

Freezableが有効なスレッドからアクセスされていることを確認します。 Freezableの継承子は、依存関係プロパティではないデータ メンバーを読み取る API の先頭でこのメソッドを呼び出す必要があります。

(継承元 Freezable)
SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Direct3D サーフェスをバック バッファーのソースとして割り当てます。

SetBackBuffer(D3DResourceType, IntPtr)

Direct3D サーフェスをバック バッファーのソースとして割り当てます。

SetCurrentValue(DependencyProperty, Object)

値ソースを変更せずに依存関係プロパティの値を設定します。

(継承元 DependencyObject)
SetValue(DependencyProperty, Object)

依存関係プロパティ識別子で指定された依存関係プロパティのローカル値を設定します。

(継承元 DependencyObject)
SetValue(DependencyPropertyKey, Object)

依存関係プロパティの DependencyPropertyKey 識別子で指定された、読み取り専用の依存関係プロパティのローカル値を設定します。

(継承元 DependencyObject)
ShouldSerializeProperty(DependencyProperty)

シリアル化プロセスが指定された依存関係プロパティの値をシリアル化する必要があるかどうかを示す値を返します。

(継承元 DependencyObject)
ToString()

現在のカルチャに基づいて、このオブジェクトの文字列表現を作成します。

(継承元 ImageSource)
ToString(IFormatProvider)

渡された IFormatProvider に基づいて、このオブジェクトの文字列形式を作成します。 プロバイダーが nullされている場合は、 CurrentCulture が使用されます。

(継承元 ImageSource)
TryLock(Duration)

D3DImageのロックを試み、指定した期間待機します。

Unlock()

D3DImageのロック数をデクリメントします。

VerifyAccess()

呼び出し元のスレッドがこの DispatcherObjectにアクセスできるように強制します。

(継承元 DispatcherObject)
WritePostscript()

ChangedFreezable イベントを発生させ、そのOnChanged() メソッドを呼び出します。 Freezableから派生するクラスは、依存関係プロパティとして格納されていないクラス メンバーを変更する API の末尾でこのメソッドを呼び出す必要があります。

(継承元 Freezable)
WritePreamble()

Freezableが固定されていないこと、および有効なスレッド コンテキストからアクセスされていることを確認します。 Freezable 継承子は、依存関係プロパティではないデータ メンバーに書き込む API の先頭でこのメソッドを呼び出す必要があります。

(継承元 Freezable)

イベント

名前 説明
Changed

Freezableまたはそれに含まれるオブジェクトが変更されたときに発生します。

(継承元 Freezable)
IsFrontBufferAvailableChanged

IsFrontBufferAvailable プロパティが変更されたときに発生します。

明示的なインターフェイスの実装

名前 説明
IFormattable.ToString(String, IFormatProvider)

指定した形式を使用して、現在のインスタンスの値を書式設定します。

(継承元 ImageSource)

適用対象