D3DImage Classe

Définition

Qui ImageSource 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 code 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 guide : hébergement du 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 WPF (Windows Presentation Foundation).

Appelez la Lock méthode pour modifier le contenu Direct3D affiché par le D3DImage. Appelez la SetBackBuffer méthode pour affecter une surface Direct3D à un D3DImage. Appelez la méthode pour suivre les AddDirtyRect 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 principale et mémoire tampon frontale. La mémoire tampon arrière représente votre surface Direct3D. Les modifications apportées à la mémoire tampon arrière sont copiées vers la mémoire tampon frontale lorsque vous appelez la Unlock méthode, où elle est affichée sur le matériel. Parfois, la mémoire tampon frontale devient indisponible. Ce manque de disponibilité peut être dû au verrouillage de l’écran, aux applications Direct3D exclusives à l’écran, au changement d’utilisateur ou à d’autres activités système. Lorsque cela se produit, votre application WPF est avertie en gérant l’événement IsFrontBufferAvailableChanged . La façon dont votre application répond à la mémoire tampon frontale devenant indisponible dépend du fait que WPF est activé pour revenir au rendu logiciel. La SetBackBuffer méthode a une surcharge qui prend un paramètre spécifiant si WPF recourt 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 falsesur , le système de rendu libère sa référence à la mémoire tampon arrière lorsque la mémoire tampon frontale 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 IsFrontBufferAvailableChanged redémarre le 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 paramètre enableSoftwareFallback défini sur true, le système de rendu conserve sa référence au tampon arrière lorsque le tampon avant devient indisponible, de sorte qu’il n’est pas nécessaire d’appeler SetBackBuffer lorsque le tampon avant est de nouveau disponible. Il peut y avoir des situations où l’appareil de l’utilisateur devient indisponible. Quand cela se produit, appelez SetBackBuffer la référence de WPF à la mémoire tampon back. Si vous devez réinitialiser votre appareil, appelez SetBackBuffer avec le paramètre backBuffer défini sur null, puis appelez à nouveau SetBackBuffer avec backBuffer défini sur une surface Direct3D valide.

Note

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

Note

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

Constructeurs

Nom Description
D3DImage()

Initialise une nouvelle instance de la classe D3DImage.

D3DImage(Double, Double)

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

Champs

Nom Description
IsFrontBufferAvailableProperty

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

Propriétés

Nom Description
CanFreeze

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

(Hérité de Freezable)
DependencyObjectType

Obtient le DependencyObjectType type CLR de cette instance.

(Hérité de DependencyObject)
Dispatcher

Obtient ce Dispatcher qui DispatcherObject est associé.

(Hérité de DispatcherObject)
HasAnimatedProperties

Obtient une valeur qui indique si un ou plusieurs AnimationClock objets sont associés à l’une 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 une mémoire tampon frontale existe.

IsFrozen

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

(Hérité de Freezable)
IsSealed

Obtient une valeur qui indique si cette instance est actuellement scellée (en lecture seule).

(Hérité de DependencyObject)
Metadata

Obtient les métadonnées associées à la source de l’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

Nom Description
AddDirtyRect(Int32Rect)

Spécifie la zone de la mémoire tampon d’arrière-mémoire qui a changé.

ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

Applique un AnimationClock à l’objet spécifié DependencyProperty. Si la propriété est déjà animée, la propriété HandoffBehavior spécifiée est utilisée.

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

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

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

Applique une animation au fichier spécifié DependencyProperty. L’animation est démarrée lorsque l’image suivante est rendue. Si la propriété spécifiée est déjà animée, celle-ci HandoffBehavior est utilisée.

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

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

(Hérité de Animatable)
CheckAccess()

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

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

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

(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 un DependencyPropertyKey.

(Hérité de DependencyObject)
Clone()

Crée un clone modifiable de cet D3DImage objet, effectuant des copies approfondies des valeurs de cet objet. Lors de la copie des propriétés de dépendance, cette méthode copie les références de ressources et les liaisons de données (qui peuvent ne plus être résolues), mais pas les animations ni leurs valeurs actuelles.

CloneCore(Freezable)

Rend l’instance un clone (copie approfondie) de la propriété de base (non animée) spécifiée Freezable .

CloneCurrentValue()

Crée un clone modifiable de cet D3DImage objet, effectuant des copies approfondies des valeurs actuelles de cet objet. Les références de ressources, les liaisons de données et les animations ne sont pas copiées, mais leurs valeurs actuelles sont copiées.

CloneCurrentValueCore(Freezable)

Rend l’instance un clone modifiable (copie approfondie) de l’élément spécifié Freezable à l’aide de valeurs de propriété actuelles.

CoerceValue(DependencyProperty)

Force la valeur de la propriété de dépendance spécifiée. Pour ce faire, appelez n’importe quelle CoerceValueCallback fonction spécifiée dans les métadonnées de propriété pour la propriété de dépendance telle qu’elle existe sur l’appel DependencyObject.

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

En cas d’implémentation dans une classe dérivée, crée une nouvelle instance de la D3DImage classe dérivée.

Equals(Object)

Détermine si un élément fourni DependencyObject est équivalent à l’actuel DependencyObject.

(Hérité de DependencyObject)
Finalize()

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

Freeze()

Rend l’objet actuel non modifiable et définit sa IsFrozen propriété sur true.

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

Rend inmodifiable D3DImage ou détermine s’il peut être rendu inmodifiable.

GetAnimationBaseValue(DependencyProperty)

Retourne la valeur non animée de l’objet spécifié DependencyProperty.

(Hérité de Animatable)
GetAsFrozen()

Crée une copie figée des valeurs de Freezablepropriété de base (non animées). É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)

Rend l’instance un clone figé de la propriété spécifiée à Freezable l’aide de valeurs de propriété de base (non animées).

GetCurrentValueAsFrozen()

Crée une copie figée de l’utilisation Freezable 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)

Rend l’instance actuelle un clone figé du fichier spécifié Freezable. Si l’objet a des propriétés de dépendance animée, 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 la 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)

Évalue à nouveau la valeur effective de la propriété de dépendance spécifiée.

(Hérité de DependencyObject)
Lock()

Verrouille et D3DImage active les opérations sur la mémoire tampon arrière.

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
OnChanged()

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

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

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

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

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

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

Remplace l’implémentation DependencyObject de OnPropertyChanged(DependencyPropertyChangedEventArgs) l’appel de tous Changed les gestionnaires en réponse à une propriété de dépendance modifiée de type Freezable.

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

Retourne la valeur locale d’une propriété de dépendance, le cas échéant.

(Hérité de DependencyObject)
ReadPreamble()

Garantit l’accès Freezable à partir d’un thread valide. Les héritiers de Freezable doivent appeler cette méthode au début de toute API qui lit les membres de données qui ne sont pas des propriétés de dépendance.

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

Affecte une surface Direct3D comme source de la mémoire tampon arrière.

SetBackBuffer(D3DResourceType, IntPtr)

Affecte une surface Direct3D comme source de la mémoire tampon arrière.

SetCurrentValue(DependencyProperty, Object)

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

(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 en fonction de 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 passage. Si le fournisseur est null, il CurrentCulture est utilisé.

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

Tente de verrouiller et D3DImage d’attendre la durée spécifiée.

Unlock()

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

VerifyAccess()

Applique que le thread appelant a accès à ce DispatcherObjectfichier .

(Hérité de DispatcherObject)
WritePostscript()

Déclenche l’événement Changed pour la Freezable méthode et appelle sa OnChanged() méthode. Les classes dérivées Freezable de doivent appeler cette méthode à la fin de toute API qui modifie les 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 l’objet Freezable n’est pas figé et qu’il est accessible à partir d’un contexte de threading valide. Freezable Les hériteurs doivent appeler cette méthode au début de toute API qui écrit dans les membres de données qui ne sont pas des propriétés de dépendance.

(Hérité de Freezable)

Événements

Nom Description
Changed

Se produit lorsque l’objet Freezable qu’il contient est modifié.

(Hérité de Freezable)
IsFrontBufferAvailableChanged

Se produit lorsque la IsFrontBufferAvailable propriété change.

Implémentations d’interfaces explicites

Nom Description
IFormattable.ToString(String, IFormatProvider)

Met en forme la valeur de l’instance actuelle à l’aide du format spécifié.

(Hérité de ImageSource)

S’applique à