D3DImage クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ユーザーが作成した 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 宣言する方法を示しています。 名前空間は既定の System.Windows.Interop XAML 名前空間に含まれていないため、マップする必要があります。 詳細については、「チュートリアル: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によって表示される Direct3D コンテンツを変更するには、 メソッドを呼び出しますD3DImage。 Direct3D サーフェスを SetBackBuffer に割り当てるには、 メソッドを D3DImage呼び出します。 Direct3D サーフェスの AddDirtyRect 更新を追跡するには、 メソッドを呼び出します。 メソッドを Unlock 呼び出して、変更された領域を表示します。
D3DImage クラスを使用して、"バック バッファー" と "フロント バッファー" という 2 つのディスプレイ バッファーを管理します。 バック バッファーは、Direct3D サーフェイスです。 Unlock メソッドを呼び出すと、バック バッファーに対する変更はフロント バッファーに転送され、そのハードウェア上に表示されます。 場合によっては、フロント バッファーが使用できなくなります。 この使用できなくなる状況は、画面ロック、全画面専用の Direct3D アプリケーション、ユーザー切り替え、またはその他のシステム アクティビティが原因で発生する可能性があります。 これが発生した場合、IsFrontBufferAvailableChanged イベントを処理することで WPF アプリケーションに通知されます。 フロント バッファーが使用できなくなった場合のアプリケーションの応答は、ソフトウェア レンダリングへのフォールバックが WPF で有効かどうかによって変わります。 SetBackBuffer メソッドには、WPF がソフトウェア レンダリングにフォールバックするかどうかを指定するパラメーターを受け取るオーバーロードがあります。
WPF がソフトウェア レンダリングにフォールバックしない場合に使用できないフロント バッファーに応答する
SetBackBuffer(D3DResourceType, IntPtr) オーバーロードを呼び出すか、enableSoftwareFallback
パラメーターを false
に設定して SetBackBuffer(D3DResourceType, IntPtr, Boolean) オーバーロードを呼び出すと、フロント バッファーが使用できなくなり、何も表示されなくなったときに、レンダリング システムではバック バッファーへの参照が解放されます。 フロント バッファーを再び使用できるようになると、レンダリング システムによって IsFrontBufferAvailableChanged イベントが発生し、WPF アプリケーションに通知されます。
IsFrontBufferAvailableChanged イベントのイベント ハンドラーを作成し、有効な Direct3D サーフェイスを使用してもう一度レンダリングを再開できます。 レンダリングを再開するには、SetBackBuffer を呼び出す必要があります。
WPF がソフトウェア レンダリングにフォールバックしたときに使用できないフロント バッファーに応答する
enableSoftwareFallback
パラメーターを true
に設定して SetBackBuffer(D3DResourceType, IntPtr, Boolean) オーバーロードを呼び出すと、フロント バッファーが使用できなくなったときにレンダリング システムにバック バッファーへの参照が保持されます。そのため、バッファーを再び使用できるようになったときに SetBackBuffer を呼び出す必要はありません。 ユーザーのデバイスが使用できなくなる場合があります。 その場合は、 を呼び出 SetBackBuffer して、WPF のバック バッファーへの参照を解放します。 デバイスをリセットする必要がある場合は、backBuffer
パラメーターを null
に設定して SetBackBuffer を呼び出し、次に backBuffer
を有効な Direct3D サーフェイスに設定して SetBackBuffer をもう一度呼び出します。
注意
パフォーマンスは、Direct3D サーフェスの設定によって大きく異なります。 詳細については、「Direct3D9 および WPF の相互運用性のパフォーマンスに関する考慮事項」を参照してください。
注意
パラメーターに を呼び出SetBackBuffer(D3DResourceType, IntPtr, Boolean)して指定true
しない限り、リモート デスクトップ接続経由などのソフトウェアで WPF がレンダリングされる場合、クラスは D3DImage Direct3D コンテンツをenableSoftwareFallback
表示しません。
コンストラクター
D3DImage() |
D3DImage クラスの新しいインスタンスを初期化します。 |
D3DImage(Double, Double) |
D3DImage クラスの新しいインスタンスを、指定された表示解像度で初期化します。 |
フィールド
IsFrontBufferAvailableProperty |
IsFrontBufferAvailable 依存関係プロパティを識別します。 |
プロパティ
CanFreeze |
オブジェクトを変更不可能にできるかどうかを示す値を取得します。 (継承元 Freezable) |
DependencyObjectType |
このインスタンスの DependencyObjectType CLR 型をラップする を取得します。 (継承元 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) |
AnimationClock を指定した DependencyProperty に適用します。 プロパティが既にアニメーション化されている場合は、SnapshotAndReplace ハンドオフ動作が使用されます。 (継承元 Animatable) |
ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) |
AnimationClock を指定した DependencyProperty に適用します。 プロパティが既にアニメーション化されている場合は、指定した HandoffBehavior が使用されます。 (継承元 Animatable) |
BeginAnimation(DependencyProperty, AnimationTimeline) |
指定された DependencyProperty にアニメーションを適用します。 アニメーションは、次のフレームがレンダリングされるときに開始されます。 指定されたプロパティが既にアニメーション化されている場合は、SnapshotAndReplace ハンドオフ動作が使用されます。 (継承元 Animatable) |
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) |
指定された DependencyProperty にアニメーションを適用します。 アニメーションは、次のフレームがレンダリングされるときに開始されます。 指定したプロパティが既にアニメーション化されている場合は、指定した HandoffBehavior が使用されます。 (継承元 Animatable) |
CheckAccess() |
呼び出し元のスレッドがこの DispatcherObject にアクセスできるかどうかを確認します。 (継承元 DispatcherObject) |
ClearValue(DependencyProperty) |
プロパティのローカル値をクリアします。 クリアするプロパティは DependencyProperty 識別子で指定されます。 (継承元 DependencyObject) |
ClearValue(DependencyPropertyKey) |
読み取り専用プロパティのローカル値を消去します。 消去するプロパティは、DependencyPropertyKey で指定します。 (継承元 DependencyObject) |
Clone() |
この D3DImage オブジェクトの変更可能な複製を作成し、このオブジェクトの値の詳細コピーを作成します。 このメソッドは、依存関係プロパティをコピーするときにリソース参照とデータ バインディングをコピーしますが (ただし、これらは解決されなくなる場合があります)、アニメーションやその現在の値はコピーしません。 |
CloneCore(Freezable) |
基本 (アニメーション化されていない) プロパティ値を使用して、インスタンスを、指定した Freezable の複製 (詳細コピー) にします。 |
CloneCurrentValue() |
この D3DImage オブジェクトの変更可能な複製を作成し、このオブジェクトの現在値の詳細コピーを作成します。 リソース参照、データ バインディング、アニメーションはコピーされませんが、それらの現在値はコピーされます。 |
CloneCurrentValueCore(Freezable) |
現在のプロパティ値を使用して、インスタンスを、指定した Freezable の変更可能な複製 (詳細コピー) にします。 |
CoerceValue(DependencyProperty) |
指定した依存関係プロパティの値を強制します。 これは、呼び出し元の DependencyObject の依存関係プロパティのプロパティ メタデータで指定されている CoerceValueCallback 関数を呼び出すことによって実現されます。 (継承元 DependencyObject) |
CopyBackBuffer() |
D3DImage のソフトウェア コピーを作成します。 |
CreateInstance() |
Freezable クラスの新しいインスタンスを初期化します。 (継承元 Freezable) |
CreateInstanceCore() |
派生クラスで実装された場合、D3DImage 派生クラスの新しいインスタンスを作成します。 |
Equals(Object) |
指定した DependencyObject が現在の DependencyObject と等しいかどうかを判断します。 (継承元 DependencyObject) |
Finalize() |
D3DImage がガベージ コレクションによって回収される前にリソースを解放し、その他のクリーンアップ操作を実行します。 |
Freeze() |
現在のオブジェクトを変更不可能にし、その IsFrozen プロパティを |
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) |
設定されたばかりの DependencyObjectType データ メンバーに対して、適切なコンテキスト ポインターが確立されていることを確認します。 (継承元 Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
このメンバーは、Windows Presentation Foundation (WPF) インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。 (継承元 Freezable) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) の DependencyObject 実装をオーバーライドして、さらに型 Freezable の変化する依存関係プロパティへの応答として任意の Changed ハンドラーも呼び出します。 (継承元 Freezable) |
ReadLocalValue(DependencyProperty) |
ローカルの依存関係プロパティの値を返します (存在する場合)。 (継承元 DependencyObject) |
ReadPreamble() |
Freezable が有効なスレッドからアクセスされていることを確認します。 Freezable の継承側は、依存関係プロパティでないデータ メンバーを読み取る任意の API の開始時に、このメソッドを呼び出す必要があります。 (継承元 Freezable) |
SetBackBuffer(D3DResourceType, IntPtr) |
バック バッファーのソースとして、Direct3D サーフェイスを割り当てます。 |
SetBackBuffer(D3DResourceType, IntPtr, Boolean) |
バック バッファーのソースとして、Direct3D サーフェイスを割り当てます。 |
SetCurrentValue(DependencyProperty, Object) |
依存関係プロパティ値のソースを変更せずにその値を設定します。 (継承元 DependencyObject) |
SetValue(DependencyProperty, Object) |
依存関係プロパティ識別子を指定して、該当する依存関係プロパティのローカル値を設定します。 (継承元 DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
依存関係プロパティの DependencyPropertyKey 識別子で指定した読み取り専用の依存関係プロパティのローカル値を設定します。 (継承元 DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
シリアル化プロセスが、指定された依存関係プロパティの値をシリアル化する必要があるかどうかを示す値を返します。 (継承元 DependencyObject) |
ToString() |
現在のカルチャに基づいて、このオブジェクトの文字列形式を作成します。 (継承元 ImageSource) |
ToString(IFormatProvider) |
渡された IFormatProvider に基づいて、このオブジェクトの文字列形式を作成します。 プロバイダーが |
TryLock(Duration) |
D3DImage のロックを試行し、指定された期間待機します。 |
Unlock() |
D3DImage のロック カウントをデクリメントします。 |
VerifyAccess() |
呼び出し元のスレッドがこの DispatcherObject にアクセスできるように強制します。 (継承元 DispatcherObject) |
WritePostscript() |
Freezable の Changed イベントを発生させ、その OnChanged() メソッドを呼び出します。 Freezable から派生するクラスは、依存関係プロパティとして格納されていないクラス メンバーを変更するすべての API の終了時に、このメソッドを呼び出す必要があります。 (継承元 Freezable) |
WritePreamble() |
Freezable が固定されておらず、有効なスレッド コンテキストからアクセスされていることを確認します。 Freezable の継承側は、依存関係プロパティでないデータ メンバーに書き込む任意の API の開始時に、このメソッドを呼び出す必要があります。 (継承元 Freezable) |
イベント
Changed |
Freezable、またはこれに含まれているオブジェクトが変更されると発生します。 (継承元 Freezable) |
IsFrontBufferAvailableChanged |
IsFrontBufferAvailable プロパティが変更されたときに発生します。 |
明示的なインターフェイスの実装
IFormattable.ToString(String, IFormatProvider) |
指定された書式を使用して現在のインスタンスの値を書式設定します。 (継承元 ImageSource) |
適用対象
.NET