D3DImage Klasse

Definition

Ein ImageSource Element, das eine vom Benutzer erstellte Direct3D-Oberfläche anzeigt.

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
Vererbung

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein D3DImage Xaml-Code deklariert wird. Sie müssen den System.Windows.Interop Namespace zuordnen, da er nicht in den standardmäßigen XAML-Namespaces enthalten ist. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Hosten von Direct3D9-Inhalten in WPF.

    <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>

Hinweise

Verwenden Sie die D3DImage Klasse, um Direct3D-Inhalte in einer Windows Presentation Foundation (WPF)-Anwendung zu hosten.

Rufen Sie die Lock Methode auf, um den direct3D-Inhalt zu ändern, der von der D3DImage. Rufen Sie die SetBackBuffer Methode auf, um einer Direct3D-Oberfläche zuzuweisen D3DImage. Rufen Sie die AddDirtyRect Methode auf, um Aktualisierungen der Direct3D-Oberfläche nachzuverfolgen. Rufen Sie die Unlock Methode auf, um die geänderten Bereiche anzuzeigen.

Die D3DImage Klasse verwaltet zwei Anzeigepuffer, die als Hintergrundpuffer und Frontpuffer bezeichnet werden. Der Hintergrundpuffer ist Ihre Direct3D-Oberfläche. Änderungen am Hintergrundpuffer werden beim Aufrufen der Unlock Methode, in der sie auf der Hardware angezeigt wird, vorwärts an den Frontpuffer kopiert. Gelegentlich ist der Frontpuffer nicht verfügbar. Dieser Mangel an Verfügbarkeit kann durch Bildschirmsperrung, exklusive Direct3D-Anwendungen, Benutzerwechsel oder andere Systemaktivitäten verursacht werden. In diesem Fall wird Ihre WPF-Anwendung durch die Behandlung des IsFrontBufferAvailableChanged Ereignisses benachrichtigt. Wie Ihre Anwendung reagiert, wenn der Frontpuffer nicht verfügbar wird, hängt davon ab, ob WPF so eingerichtet ist, dass es auf Softwarerendering zurückgreift. Die SetBackBuffer Methode verfügt über eine Überladung, die einen Parameter verwendet, der angibt, ob WPF auf das Softwarerendering zurückgreift.

Reagieren auf einen nicht verfügbaren Frontpuffer, wenn WPF nicht auf das Softwarerendering zurückweicht

Wenn Sie die SetBackBuffer(D3DResourceType, IntPtr) Überladung aufrufen oder die SetBackBuffer(D3DResourceType, IntPtr, Boolean) Überladung mit dem enableSoftwareFallback Parameter, der auf false festgelegt ist, aufrufen, gibt das Renderingsystem seinen Verweis auf den Backbuffer frei, wenn der Frontbuffer nicht verfügbar ist und nichts angezeigt wird. Wenn der Frontpuffer wieder verfügbar ist, löst das Renderingsystem das IsFrontBufferAvailableChanged Ereignis aus, um die WPF-Anwendung zu benachrichtigen. Sie können einen Ereignishandler für das IsFrontBufferAvailableChanged Ereignis erstellen, um das Rendering erneut mit einer gültigen Direct3D-Oberfläche neu zu starten. Um das Rendering neu zu starten, müssen Sie aufrufen SetBackBuffer.

Reagieren auf einen nicht verfügbaren Frontpuffer, wenn WPF auf das Softwarerendering zurückfällt

Wenn Sie die SetBackBuffer(D3DResourceType, IntPtr, Boolean) Überladung mit dem enableSoftwareFallback Parametersatz trueaufrufen, behält das Renderingsystem seinen Verweis auf den Hintergrundpuffer bei, wenn der Frontpuffer nicht mehr verfügbar ist, sodass es nicht mehr erforderlich SetBackBuffer ist, wenn der Frontpuffer wieder verfügbar ist. Es kann Situationen geben, in denen das Gerät des Benutzers nicht verfügbar ist. Wenn dies geschieht, rufen Sie SetBackBuffer auf, um den Verweis von WPF auf den Hintergrundpuffer freizugeben. Wenn Sie Ihr Gerät zurücksetzen müssen, rufen Sie SetBackBuffer auf, wobei der Parameter backBuffer auf null gesetzt ist, und rufen Sie SetBackBuffer anschließend erneut auf, wobei backBuffer auf eine gültige Direct3D-Oberfläche gesetzt ist.

Note

Die Leistung hängt stark von den Einstellungen der Direct3D-Oberfläche ab. Weitere Informationen finden Sie unter Leistungsüberlegungen für Direct3D9 und WPF-Interoperabilität.

Note

Die D3DImage Klasse zeigt keinen Direct3D-Inhalt an, wenn WPF in Software gerendert wird, z. B. über eine Remotedesktopverbindung, es sei denn, Sie rufen den Parameter auf SetBackBuffer(D3DResourceType, IntPtr, Boolean) und geben ihn enableSoftwareFallback antrue.

Konstruktoren

Name Beschreibung
D3DImage()

Initialisiert eine neue Instanz der D3DImage-Klasse.

D3DImage(Double, Double)

Initialisiert eine neue Instanz der D3DImage Klasse mit der angegebenen Anzeigeauflösung.

Felder

Name Beschreibung
IsFrontBufferAvailableProperty

Identifies the IsFrontBufferAvailable dependency property.

Eigenschaften

Name Beschreibung
CanFreeze

Ruft einen Wert ab, der angibt, ob das Objekt unveränderlich gemacht werden kann.

(Geerbt von Freezable)
DependencyObjectType

Ruft den DependencyObjectType CLR-Typ dieser Instanz ab.

(Geerbt von DependencyObject)
Dispatcher

Ruft dies Dispatcher ab, dem dies DispatcherObject zugeordnet ist.

(Geerbt von DispatcherObject)
HasAnimatedProperties

Ruft einen Wert ab, der angibt, ob ein oder AnimationClock mehrere Objekte einer der Abhängigkeitseigenschaften dieses Objekts zugeordnet sind.

(Geerbt von Animatable)
Height

Ruft die Höhe der .D3DImage

IsFrontBufferAvailable

Ruft einen Wert ab, der angibt, ob ein Frontpuffer vorhanden ist.

IsFrozen

Ruft einen Wert ab, der angibt, ob das Objekt derzeit geändert werden kann.

(Geerbt von Freezable)
IsSealed

Ruft einen Wert ab, der angibt, ob diese Instanz aktuell versiegelt ist (schreibgeschützt).

(Geerbt von DependencyObject)
Metadata

Ruft die Metadaten ab, die der Bildquelle zugeordnet sind.

PixelHeight

Ruft die Höhe des D3DImage, in Pixeln ab.

PixelWidth

Ruft die Breite des D3DImage, in Pixeln ab.

Width

Ruft die Breite der D3DImage.

Methoden

Name Beschreibung
AddDirtyRect(Int32Rect)

Gibt den Bereich des geänderten Hintergrundpuffers an.

ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

Wendet eine AnimationClock auf die angegebene DependencyProperty. Wenn die Eigenschaft bereits animiert ist, wird die angegebene HandoffBehavior Eigenschaft verwendet.

(Geerbt von Animatable)
ApplyAnimationClock(DependencyProperty, AnimationClock)

Wendet eine AnimationClock auf die angegebene DependencyProperty. Wenn die Eigenschaft bereits animiert ist, wird das SnapshotAndReplace Übergabeverhalten verwendet.

(Geerbt von Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Wendet eine Animation auf die angegebene DependencyPropertyAnimation an. Die Animation wird gestartet, wenn der nächste Frame gerendert wird. Wenn die angegebene Eigenschaft bereits animiert ist, wird die angegebene HandoffBehavior Eigenschaft verwendet.

(Geerbt von Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline)

Wendet eine Animation auf die angegebene DependencyPropertyAnimation an. Die Animation wird gestartet, wenn der nächste Frame gerendert wird. Wenn die angegebene Eigenschaft bereits animiert ist, wird das SnapshotAndReplace Übergabeverhalten verwendet.

(Geerbt von Animatable)
CheckAccess()

Bestimmt, ob der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat.

(Geerbt von DispatcherObject)
ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Eigenschaft. Die zu löschende Eigenschaft wird durch einen DependencyProperty Bezeichner angegeben.

(Geerbt von DependencyObject)
ClearValue(DependencyPropertyKey)

Löscht den lokalen Wert einer schreibgeschützten Eigenschaft. Die zu löschende Eigenschaft wird durch eine DependencyPropertyKey.

(Geerbt von DependencyObject)
Clone()

Erstellt einen modifizierbaren Klon dieses D3DImage Objekts und erstellt tiefe Kopien der Werte dieses Objekts. Beim Kopieren von Abhängigkeitseigenschaften kopiert diese Methode Ressourcenverweise und Datenbindungen (die möglicherweise nicht mehr aufgelöst werden können), jedoch keine Animationen oder ihre aktuellen Werte.

CloneCore(Freezable)

Macht die Instanz zu einem Klon (deep copy) der angegebenen Freezable Basiseigenschaftswerte (nicht animiert).

CloneCurrentValue()

Erstellt einen modifizierbaren Klon dieses D3DImage Objekts, wodurch tiefe Kopien der aktuellen Werte dieses Objekts erstellt werden. Ressourcenverweise, Datenbindungen und Animationen werden nicht kopiert, aber ihre aktuellen Werte werden kopiert.

CloneCurrentValueCore(Freezable)

Macht die Instanz zu einem modifizierbaren Klon (deep copy) des angegebenen Freezable Werts mit aktuellen Eigenschaftswerten.

CoerceValue(DependencyProperty)

Wandelt den Wert der angegebenen Abhängigkeitseigenschaft um. Dies wird erreicht, indem alle CoerceValueCallback in Eigenschaftsmetadaten für die Abhängigkeitseigenschaft angegebenen Funktionen aufgerufen werden, wie sie für den Aufruf DependencyObjectvorhanden sind.

(Geerbt von DependencyObject)
CopyBackBuffer()

Erstellt eine Softwarekopie der D3DImage.

CreateInstance()

Initialisiert eine neue Instanz der Freezable-Klasse.

(Geerbt von Freezable)
CreateInstanceCore()

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird eine neue Instanz der D3DImage abgeleiteten Klasse erstellt.

Equals(Object)

Bestimmt, ob ein bereitgestelltes DependencyObject Element dem aktuellen DependencyObjectentspricht.

(Geerbt von DependencyObject)
Finalize()

Gibt Ressourcen frei und führt andere Bereinigungsvorgänge aus, bevor die D3DImage Garbage Collection zurückgefordert wird.

Freeze()

Macht das aktuelle Objekt unveränderlich und legt seine IsFrozen Eigenschaft auf true.

(Geerbt von Freezable)
FreezeCore(Boolean)

Macht die D3DImage unveränderlichen oder bestimmt, ob sie unveränderlich gemacht werden kann.

GetAnimationBaseValue(DependencyProperty)

Gibt den nicht animierten Wert des angegebenen DependencyPropertyWerts zurück.

(Geerbt von Animatable)
GetAsFrozen()

Erstellt eine fixierte Kopie der Freezablebasisbasierten (nicht animierten) Eigenschaftswerte. Da die Kopie fixiert ist, werden alle fixierten Unterobjekte per Verweis kopiert.

(Geerbt von Freezable)
GetAsFrozenCore(Freezable)

Macht die Instanz zu einem fixierten Klon der angegebenen Freezable Basiseigenschaft (nicht animierte) Eigenschaftswerte.

GetCurrentValueAsFrozen()

Erstellt eine fixierte Kopie der Freezable aktuellen Eigenschaftswerte. Da die Kopie fixiert ist, werden alle fixierten Unterobjekte per Verweis kopiert.

(Geerbt von Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Macht die aktuelle Instanz zu einem fixierten Klon des angegebenen Freezable. Wenn das Objekt animierte Abhängigkeitseigenschaften aufweist, werden die aktuellen animierten Werte kopiert.

GetHashCode()

Ruft einen Hashcode für diese DependencyObjectab.

(Geerbt von DependencyObject)
GetLocalValueEnumerator()

Erstellt einen speziellen Enumerator, um zu bestimmen, welche Abhängigkeitseigenschaften lokal festgelegte Werte für diese DependencyObjectEigenschaft haben.

(Geerbt von DependencyObject)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft für diese Instanz einer .DependencyObject

(Geerbt von DependencyObject)
InvalidateProperty(DependencyProperty)

Wertet den effektiven Wert für die angegebene Abhängigkeitseigenschaft erneut aus.

(Geerbt von DependencyObject)
Lock()

Sperrt die D3DImage Vorgänge im Hintergrundpuffer und aktiviert sie.

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OnChanged()

Wird aufgerufen, wenn das aktuelle Freezable Objekt geändert wird.

(Geerbt von Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Dieses Mitglied unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Stellt sicher, dass geeignete Kontextzeiger für ein DependencyObjectType soeben festgelegtes Datenelement eingerichtet werden.

(Geerbt von Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Setzt die DependencyObject Implementierung OnPropertyChanged(DependencyPropertyChangedEventArgs) außer Kraft, um auch alle Changed Handler als Reaktion auf eine sich ändernde Abhängigkeitseigenschaft vom Typ Freezableaufzurufen.

(Geerbt von Freezable)
ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, sofern vorhanden.

(Geerbt von DependencyObject)
ReadPreamble()

Stellt sicher, dass der Freezable Zugriff über einen gültigen Thread erfolgt. Erber von Freezable müssen diese Methode am Anfang einer API aufrufen, die Datenmmber liest, die keine Abhängigkeitseigenschaften sind.

(Geerbt von Freezable)
SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Weist eine Direct3D-Oberfläche als Quelle des Hintergrundpuffers zu.

SetBackBuffer(D3DResourceType, IntPtr)

Weist eine Direct3D-Oberfläche als Quelle des Hintergrundpuffers zu.

SetCurrentValue(DependencyProperty, Object)

Legt den Wert einer Abhängigkeitseigenschaft fest, ohne die Wertquelle zu ändern.

(Geerbt von DependencyObject)
SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die durch den Bezeichner der Abhängigkeitseigenschaft angegeben wird.

(Geerbt von DependencyObject)
SetValue(DependencyPropertyKey, Object)

Legt den lokalen Wert einer schreibgeschützten Abhängigkeitseigenschaft fest, die durch den DependencyPropertyKey Bezeichner der Abhängigkeitseigenschaft angegeben wird.

(Geerbt von DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Gibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert für die bereitgestellte Abhängigkeitseigenschaft serialisieren sollen.

(Geerbt von DependencyObject)
ToString()

Erstellt eine Zeichenfolgendarstellung dieses Objekts basierend auf der aktuellen Kultur.

(Geerbt von ImageSource)
ToString(IFormatProvider)

Erstellt eine Zeichenfolgendarstellung dieses Objekts basierend auf dem IFormatProvider übergebenen Objekt. Wenn der Anbieter ist null, wird dies CurrentCulture verwendet.

(Geerbt von ImageSource)
TryLock(Duration)

Versucht, die D3DImage angegebene Dauer zu sperren und zu warten.

Unlock()

Erhöht die Sperranzahl für die D3DImage.

VerifyAccess()

Erzwingt, dass der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat.

(Geerbt von DispatcherObject)
WritePostscript()

Löst das Changed Ereignis für die Freezable Methode aus und ruft es OnChanged() auf. Klassen, die von Freezable dieser Methode abgeleitet werden, sollten am Ende einer API aufgerufen werden, die Klassenmmber ändert, die nicht als Abhängigkeitseigenschaften gespeichert sind.

(Geerbt von Freezable)
WritePreamble()

Überprüft, ob der Freezable Zugriff nicht fixiert ist und über einen gültigen Threadingkontext darauf zugegriffen wird. Freezable Vererbungen sollten diese Methode am Anfang einer API aufrufen, die in Datenmmber schreibt, die keine Abhängigkeitseigenschaften sind.

(Geerbt von Freezable)

Ereignisse

Name Beschreibung
Changed

Tritt auf, wenn das Freezable darin enthaltene Objekt geändert wird.

(Geerbt von Freezable)
IsFrontBufferAvailableChanged

Tritt auf, wenn sich die IsFrontBufferAvailable Eigenschaft ändert.

Explizite Schnittstellenimplementierungen

Name Beschreibung
IFormattable.ToString(String, IFormatProvider)

Formatiert den Wert der aktuellen Instanz mithilfe des angegebenen Formats.

(Geerbt von ImageSource)

Gilt für: