D3DImage Classe

Définition

ImageSource qui affiche une surface Direct3D créée par l'utilisateur.

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
Héritage

Exemples

L’exemple de code suivant montre comment déclarer un D3DImage en XAML. Vous devez mapper l’espace System.Windows.Interop de noms, car il n’est pas inclus dans les espaces de noms XAML par défaut. Pour plus d’informations, consultez Procédure pas à pas : hébergement de contenu Direct3D9 dans 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>

Remarques

Utilisez la classe pour héberger du D3DImage contenu Direct3D dans une application Windows Presentation Foundation (WPF).

Appelez la Lock méthode pour modifier le contenu Direct3D affiché par .D3DImage Appelez la SetBackBuffer méthode pour affecter une surface Direct3D à un D3DImage. Appelez la AddDirtyRect méthode pour suivre les mises à jour de la surface Direct3D. Appelez la Unlock méthode pour afficher les zones modifiées.

La D3DImage classe gère deux mémoires tampons d’affichage, appelées mémoire tampon arrière et mémoire tampon avant. La mémoire tampon arrière est votre surface Direct3D. Les modifications apportées à la mémoire tampon arrière sont copiées vers la mémoire tampon avant lorsque vous appelez la Unlock méthode, où elle s’affiche sur le matériel. Parfois, la mémoire tampon avant devient indisponible. Ce manque de disponibilité peut être dû au verrouillage d’écran, aux applications Direct3D en plein écran exclusives, au changement d’utilisateur ou à d’autres activités système. Dans ce cas, votre application WPF est avertie en gérant l’événement IsFrontBufferAvailableChanged . La façon dont votre application répond à l’indisponibilité de la mémoire tampon frontale dépend de l’activation ou non de WPF pour revenir au rendu logiciel. La SetBackBuffer méthode a une surcharge qui prend un paramètre qui spécifie si WPF revient au rendu logiciel.

Réponse à une mémoire tampon frontale non disponible lorsque WPF ne revient pas au rendu logiciel

Lorsque vous appelez la SetBackBuffer(D3DResourceType, IntPtr) surcharge ou appelez la SetBackBuffer(D3DResourceType, IntPtr, Boolean) surcharge avec le enableSoftwareFallback paramètre défini sur false, le système de rendu libère sa référence à la mémoire tampon arrière lorsque la mémoire tampon avant devient indisponible et que rien n’est affiché. Lorsque la mémoire tampon frontale est à nouveau disponible, le système de rendu déclenche l’événement IsFrontBufferAvailableChanged pour notifier votre application WPF. Vous pouvez créer un gestionnaire d’événements pour que l’événement redémarre le IsFrontBufferAvailableChanged rendu avec une surface Direct3D valide. Pour redémarrer le rendu, vous devez appeler SetBackBuffer.

Réponse à une mémoire tampon frontale non disponible lorsque WPF revient au rendu logiciel

Lorsque vous appelez la SetBackBuffer(D3DResourceType, IntPtr, Boolean) surcharge avec le enableSoftwareFallback paramètre défini sur true, le système de rendu conserve sa référence à la mémoire tampon arrière lorsque la mémoire tampon frontale devient indisponible. Il n’est donc pas nécessaire d’appeler SetBackBuffer lorsque la mémoire tampon frontale est à nouveau disponible. Il peut arriver que l’appareil de l’utilisateur ne soit plus disponible. Lorsque cela se produit, appelez SetBackBuffer pour libérer la référence de WPF à la mémoire tampon arrière. Si vous devez réinitialiser votre appareil, appelez SetBackBuffer avec le backBuffer paramètre défini sur null, puis appelez SetBackBuffer à nouveau avec backBuffer défini sur une surface Direct3D valide.

Notes

Les performances dépendent grandement des paramètres de la surface Direct3D. Pour plus d’informations, consultez Considérations relatives aux performances pour Direct3D9 et l’interopérabilité WPF.

Notes

La D3DImage classe n’affiche pas de contenu Direct3D lorsque WPF est rendu dans un logiciel, par exemple via une connexion Bureau à distance, sauf si vous appelez SetBackBuffer(D3DResourceType, IntPtr, Boolean) et spécifiez true pour le enableSoftwareFallback paramètre.

Constructeurs

D3DImage()

Initialise une nouvelle instance de la classe D3DImage.

D3DImage(Double, Double)

Initialise une nouvelle instance de la classe D3DImage avec la résolution d'affichage spécifiée.

Champs

IsFrontBufferAvailableProperty

Identifie la propriété de dépendance IsFrontBufferAvailable.

Propriétés

CanFreeze

Obtient une valeur qui indique si l’objet peut être rendu non modifiable.

(Hérité de Freezable)
DependencyObjectType

Obtient le DependencyObjectType qui encapsule le type CLR de ce instance.

(Hérité de DependencyObject)
Dispatcher

Obtient le Dispatcher associé à DispatcherObject.

(Hérité de DispatcherObject)
HasAnimatedProperties

Obtient une valeur qui indique si un ou plusieurs objets AnimationClock sont associés à l'une ou l'autre des propriétés de dépendance de cet objet.

(Hérité de Animatable)
Height

Obtient la hauteur du D3DImage.

IsFrontBufferAvailable

Obtient une valeur qui indique si un tampon d'affichage existe.

IsFrozen

Obtient une valeur qui indique si l’objet est actuellement modifiable.

(Hérité de Freezable)
IsSealed

Récupère une valeur qui indique si cette instance est actuellement sealed (en lecture seule).

(Hérité de DependencyObject)
Metadata

Obtient les métadonnées associées à la source d'image.

PixelHeight

Obtient la hauteur du D3DImage en pixels.

PixelWidth

Obtient la largeur du D3DImage en pixels.

Width

Obtient la largeur du D3DImage.

Méthodes

AddDirtyRect(Int32Rect)

Spécifie la zone de la mémoire tampon d'arrière-plan qui a été modifiée.

ApplyAnimationClock(DependencyProperty, AnimationClock)

Applique AnimationClock au DependencyProperty spécifié. Si la propriété est déjà animée, le comportement de transfert SnapshotAndReplace est utilisé.

(Hérité de Animatable)
ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

Applique AnimationClock au DependencyProperty spécifié. Si la propriété spécifiée est déjà animée, le comportement HandoffBehavior spécifié est utilisé.

(Hérité de Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline)

Applique une animation au DependencyProperty spécifié. L’animation est démarrée lors de la restitution de l’image suivante. Si la propriété spécifiée est déjà animée, le comportement de transfert SnapshotAndReplace est utilisé.

(Hérité de Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Applique une animation au DependencyProperty spécifié. L’animation est démarrée lors de la restitution de l’image suivante. Si la propriété spécifiée est déjà animée, le comportement HandoffBehavior spécifié est utilisé.

(Hérité de Animatable)
CheckAccess()

Détermine si le thread appelant a accès à ce DispatcherObject.

(Hérité de DispatcherObject)
ClearValue(DependencyProperty)

Efface la valeur locale d’une propriété. La propriété à effacer est spécifiée par un identificateur DependencyProperty.

(Hérité de DependencyObject)
ClearValue(DependencyPropertyKey)

Efface la valeur locale d’une propriété en lecture seule. La propriété à effacer est spécifiée par DependencyPropertyKey.

(Hérité de DependencyObject)
Clone()

Crée un clone modifiable de cet objet D3DImage, en créant des copies intégrales des valeurs de l'objet. Lors de la copie de propriétés de dépendance, cette méthode copie les références de ressources et les liaisons de données (même si elles ne peuvent plus être résolues), mais pas les animations ni leurs valeurs actuelles.

CloneCore(Freezable)

Fait de l’instance un clone (copie complète) du Freezable spécifié utilisant des valeurs de propriété (non animée) de base.

CloneCurrentValue()

Crée un clone modifiable de cet objet D3DImage, en effectuant une copie complète des valeurs actuelles de cet objet. Contrairement à leurs valeurs actuelles, les références de ressources, les liaisons de données et les animations ne sont pas copiées.

CloneCurrentValueCore(Freezable)

Fait de l’instance un clone (copie complète) modifiable du Freezable spécifié à l’aide des valeurs de propriété actuelles.

CoerceValue(DependencyProperty)

Convertit la valeur de la propriété de dépendance spécifiée. Pour cela, on appelle toute fonction CoerceValueCallback spécifiée dans les métadonnées de propriété pour la propriété de dépendance telle qu’elle existe sur le DependencyObject appelant.

(Hérité de DependencyObject)
CopyBackBuffer()

Crée une copie logicielle du D3DImage.

CreateInstance()

Initialise une nouvelle instance de la classe Freezable.

(Hérité de Freezable)
CreateInstanceCore()

Une fois implémentée dans une classe dérivée, initialise une nouvelle instance de la classe dérivée D3DImage.

Equals(Object)

Détermine si un DependencyObject fourni est équivalent au DependencyObject réel.

(Hérité de DependencyObject)
Finalize()

Libère les ressources et exécute d’autres opérations de nettoyage avant la récupération du D3DImage par la garbage collection.

Freeze()

Rend l’objet actif non modifiable et attribue à sa propriété IsFrozen la valeur true.

(Hérité de Freezable)
FreezeCore(Boolean)

Rend le D3DImage non modifiable ou détermine s'il peut être rendu non modifiable.

GetAnimationBaseValue(DependencyProperty)

Retourne la valeur non animée de la propriété DependencyProperty spécifiée.

(Hérité de Animatable)
GetAsFrozen()

Crée une copie figée de Freezable, à l'aide des valeurs de propriété (non-animées) de base. Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence.

(Hérité de Freezable)
GetAsFrozenCore(Freezable)

Transforme l’instance en clone figé du Freezable spécifié utilisant des valeurs de propriété (non animée) de base.

GetCurrentValueAsFrozen()

Crée une copie figée de Freezable à l'aide des valeurs de propriété actuelles. Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence.

(Hérité de Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Convertit l’instance actuelle en un clone figé du Freezable spécifié. Si l’objet a des propriétés de dépendance animées, leurs valeurs animées actuelles sont copiées.

GetHashCode()

Obtient un code de hachage pour ce DependencyObject.

(Hérité de DependencyObject)
GetLocalValueEnumerator()

Crée un énumérateur spécialisé pour déterminer quelles propriétés de dépendance ont des valeurs définies localement sur ce DependencyObject.

(Hérité de DependencyObject)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetValue(DependencyProperty)

Retourne la valeur effective actuelle d’une propriété de dépendance sur cette instance d’un DependencyObject.

(Hérité de DependencyObject)
InvalidateProperty(DependencyProperty)

Réévalue la valeur effective de la propriété de dépendance spécifiée.

(Hérité de DependencyObject)
Lock()

Verrouille le D3DImage et active des opérations sur la mémoire tampon d'arrière-plan.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnChanged()

Appelé lorsque l’objet Freezable actuel est modifié.

(Hérité de Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Garantit que les pointeurs de contexte appropriés sont établis pour un membre de données de type DependencyObjectType qui vient juste d'être défini.

(Hérité de Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Ce membre prend en charge l’infrastructure Windows Presentation Foundation (WPF) et n’est pas destiné à être utilisé directement à partir de votre code.

(Hérité de Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Substitue l’implémentation DependencyObject de OnPropertyChanged(DependencyPropertyChangedEventArgs) pour appeler également tous les gestionnaires Changed en réponse à une propriété de dépendance variable de type Freezable.

(Hérité de Freezable)
ReadLocalValue(DependencyProperty)

Retourne la valeur locale d’une propriété de dépendance, si elle existe.

(Hérité de DependencyObject)
ReadPreamble()

Garantit que Freezable est accessible à partir d'un thread valide. Les héritiers de Freezable doivent appeler cette méthode au début de toute API lisant les membres de données qui ne sont pas des propriétés de dépendance.

(Hérité de Freezable)
SetBackBuffer(D3DResourceType, IntPtr)

Assigne une surface Direct3D comme source de la mémoire tampon d'arrière-plan.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Assigne une surface Direct3D comme source de la mémoire tampon d'arrière-plan.

SetCurrentValue(DependencyProperty, Object)

Définit la valeur d’une propriété de dépendance sans modifier sa valeur source.

(Hérité de DependencyObject)
SetValue(DependencyProperty, Object)

Définit la valeur locale d’une propriété de dépendance, spécifiée par son identificateur de propriété de dépendance.

(Hérité de DependencyObject)
SetValue(DependencyPropertyKey, Object)

Définit la valeur locale d’une propriété de dépendance en lecture seule, spécifiée par l’identificateur DependencyPropertyKey de la propriété de dépendance.

(Hérité de DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Retourne une valeur qui indique si les processus de sérialisation doivent sérialiser la valeur de la propriété de dépendance fournie.

(Hérité de DependencyObject)
ToString()

Crée une représentation sous forme de chaîne de cet objet selon la culture actuelle.

(Hérité de ImageSource)
ToString(IFormatProvider)

Crée une représentation sous forme de chaîne de cet objet en fonction du IFormatProvider passé. Si le fournisseur est null, le CurrentCulture est utilisé.

(Hérité de ImageSource)
TryLock(Duration)

Tente de verrouiller le D3DImage et attend pendant la durée spécifiée.

Unlock()

Décrémente le nombre de verrous pour le D3DImage.

VerifyAccess()

Garantit que le thread appelant a accès à DispatcherObject.

(Hérité de DispatcherObject)
WritePostscript()

Déclenche l’événement Changed pour le Freezable et appelle sa méthode OnChanged(). Les classes qui dérivent de Freezable doivent appeler cette méthode à la fin de toute API qui modifie des membres de classe qui ne sont pas stockés en tant que propriétés de dépendance.

(Hérité de Freezable)
WritePreamble()

Vérifie que le Freezable n'est pas figé et que son accès s'effectue à partir d'un contexte de thread valide. Les héritiers de Freezable doivent appeler cette méthode au début de toute API écrivant dans les membres de données qui ne sont pas des propriétés de dépendance.

(Hérité de Freezable)

Événements

Changed

Se produit lorsque Freezable ou un objet qu'il contient est modifié.

(Hérité de Freezable)
IsFrontBufferAvailableChanged

Se produit quand la propriété IsFrontBufferAvailable change.

Implémentations d’interfaces explicites

IFormattable.ToString(String, IFormatProvider)

Met en forme la valeur de l’instance actuelle en utilisant le format spécifié.

(Hérité de ImageSource)

S’applique à