D3DImage Třída

Definice

Zobrazuje ImageSource uživatelem vytvořenou plochu Direct3D.

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
Dědičnost

Příklady

Následující příklad kódu ukazuje, jak deklarovat D3DImage v XAML. Obor názvů musíte namapovat System.Windows.Interop , protože není součástí výchozích oborů názvů XAML. Další informace naleznete v tématu Návod: Hostování obsahu Direct3D9 v 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>

Poznámky

D3DImage Třída slouží k hostování obsahu Direct3D v aplikaci Windows Presentation Foundation (WPF).

Zavolejte metodu Lock , která změní obsah Direct3D zobrazený pomocí D3DImage. SetBackBuffer Voláním metody přiřaďte plochu Direct3D k objektu D3DImage. Zavolejte metodu AddDirtyRect pro sledování aktualizací na povrchu Direct3D. Unlock Voláním metody zobrazíte změněné oblasti.

Třída D3DImage spravuje dvě vyrovnávací paměti zobrazení, které se nazývají zadní vyrovnávací paměť a přední vyrovnávací paměť. Zadní buffer je vaše Direct3D plocha. Změny zadní vyrovnávací paměti se zkopírují do přední vyrovnávací paměti při zavolání metody Unlock, kde se zobrazí na hardwaru. Občas se přední buffer stane nedostupným. Příčinou tohoto nedostatku dostupnosti může být uzamčení obrazovky, exkluzivní aplikace Direct3D na celé obrazovce, přepínání uživatelů nebo jiné systémové aktivity. Pokud k tomu dojde, aplikace WPF bude upozorněna zpracováním IsFrontBufferAvailableChanged události. Způsob, jakým vaše aplikace reaguje na nedostupnou frontovou vyrovnávací paměť, závisí na tom, jestli je povoleno vrátit se do softwarového vykreslování. Metoda SetBackBuffer má přetížení, které přebírá parametr, který určuje, zda WPF spadá zpět do softwarového vykreslování.

Reagování na nedostupnou frontovou vyrovnávací paměť, když WPF nepřepadne zpět na vykreslování softwaru

Při volání SetBackBuffer(D3DResourceType, IntPtr) přetížení nebo volání SetBackBuffer(D3DResourceType, IntPtr, Boolean) přetížení s enableSoftwareFallback parametrem nastaveným na false, vykreslovací systém uvolní svůj odkaz na zadní vyrovnávací paměť, když se přední vyrovnávací paměť stane nedostupnou a nic se nezobrazí. Jakmile bude front buffer opět k dispozici, vyvolá vykreslovací systém IsFrontBufferAvailableChanged událost, která oznámí aplikaci WPF. Pro událost IsFrontBufferAvailableChanged můžete vytvořit obslužnou rutinu, která restartuje vykreslování s platným povrchem Direct3D. Chcete-li restartovat vykreslování, musíte volat SetBackBuffer.

Reagování na nedostupnou frontovou vyrovnávací paměť, když WPF vrátí zpět do softwarového vykreslování

** Když zavoláte SetBackBuffer(D3DResourceType, IntPtr, Boolean) přetížení s parametrem enableSoftwareFallback nastaveným na true, systém vykreslování si zachová svůj odkaz na zadní vyrovnávací paměť, když není k dispozici přední vyrovnávací paměť, takže není nutné volat SetBackBuffer, když je přední vyrovnávací paměť opět k dispozici. V situacích, kdy zařízení uživatele přestane být dostupné. Pokud k tomu dojde, zavolejte odkaz SetBackBuffer WPF na zadní vyrovnávací paměť. Pokud potřebujete resetovat zařízení, zavolejte SetBackBuffer s parametrem backBuffer nastaveným na null, a pak znovu volejte SetBackBuffer, nastavte backBuffer na platný povrch Direct3D.

Note

Výkon závisí výrazně na nastavení povrchu Direct3D. Další informace naleznete v tématu Aspekty výkonu pro Direct3D9 a WPF Interoperability.

Note

Třída D3DImage nezobrazuje obsah Direct3D, pokud WPF vykresluje v softwaru, například přes připojení ke vzdálené ploše, pokud pro parametr nezavoláte SetBackBuffer(D3DResourceType, IntPtr, Boolean) a nezadáte trueenableSoftwareFallback .

Konstruktory

Name Description
D3DImage()

Inicializuje novou instanci D3DImage třídy.

D3DImage(Double, Double)

Inicializuje novou instanci D3DImage třídy se zadaným rozlišením zobrazení.

Pole

Name Description
IsFrontBufferAvailableProperty

Identifikuje IsFrontBufferAvailable vlastnost závislosti.

Vlastnosti

Name Description
CanFreeze

Získá hodnotu, která označuje, zda objekt lze vytvořit nemodifovatelný.

(Zděděno od Freezable)
DependencyObjectType

DependencyObjectType Získá ten, který zabalí typ CLR této instance.

(Zděděno od DependencyObject)
Dispatcher

Dispatcher Získá toto DispatcherObject je přidružené.

(Zděděno od DispatcherObject)
HasAnimatedProperties

Získá hodnotu, která určuje, zda jeden nebo více AnimationClock objektů je přidružen k některé z vlastností závislosti tohoto objektu.

(Zděděno od Animatable)
Height

Získá výšku D3DImage.

IsFrontBufferAvailable

Získá hodnotu, která označuje, zda front vyrovnávací paměť existuje.

IsFrozen

Získá hodnotu, která označuje, zda objekt je aktuálně upravitelný.

(Zděděno od Freezable)
IsSealed

Získá hodnotu, která označuje, zda je tato instance aktuálně zapečetěna (jen pro čtení).

(Zděděno od DependencyObject)
Metadata

Získá metadata přidružená ke zdroji image.

PixelHeight

Získá výšku D3DImage, v pixelech.

PixelWidth

Získá šířku D3DImage, v pixelech.

Width

Získá šířku D3DImage.

Metody

Name Description
AddDirtyRect(Int32Rect)

Určuje oblast zadní vyrovnávací paměti, která se změnila.

ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

Použije pro AnimationClock zadaný DependencyPropertyparametr . Pokud je vlastnost již animovaná, použije se zadané HandoffBehavior .

(Zděděno od Animatable)
ApplyAnimationClock(DependencyProperty, AnimationClock)

Použije pro AnimationClock zadaný DependencyPropertyparametr . Pokud je vlastnost již animované, použije se SnapshotAndReplace chování předání.

(Zděděno od Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Použije animaci na zadanou DependencyPropertypoložku . Animace se spustí při vykreslení dalšího snímku. Pokud je zadaná vlastnost již animované, použije se zadaná HandoffBehavior vlastnost.

(Zděděno od Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline)

Použije animaci na zadanou DependencyPropertypoložku . Animace se spustí při vykreslení dalšího snímku. Pokud je zadaná vlastnost již animované, použije se SnapshotAndReplace chování předání.

(Zděděno od Animatable)
CheckAccess()

Určuje, zda volající vlákno má přístup k tomuto DispatcherObject.

(Zděděno od DispatcherObject)
ClearValue(DependencyProperty)

Vymaže místní hodnotu vlastnosti. Vlastnost, která se má vymazat, je určena identifikátorem DependencyProperty .

(Zděděno od DependencyObject)
ClearValue(DependencyPropertyKey)

Vymaže místní hodnotu vlastnosti jen pro čtení. Vlastnost, která má být vymazána, je určena parametrem DependencyPropertyKey.

(Zděděno od DependencyObject)
Clone()

Vytvoří upravitelný klon tohoto D3DImage objektu a vytvoří hluboké kopie hodnot tohoto objektu. Při kopírování vlastností závislostí tato metoda kopíruje odkazy na prostředky a datové vazby (které se už nemusí přeložit), ale ne animace nebo jejich aktuální hodnoty.

CloneCore(Freezable)

Vytvoří instanci klonem (hloubkovou kopií) zadaného Freezable pomocí základních (ne animovaných) hodnot vlastností.

CloneCurrentValue()

Vytvoří upravitelný klon tohoto D3DImage objektu a vytvoří hluboké kopie aktuálních hodnot tohoto objektu. Odkazy na prostředky, datové vazby a animace se nekopírují, ale jejich aktuální hodnoty se zkopírují.

CloneCurrentValueCore(Freezable)

Vytvoří instanci upravitelný klon (hloubkovou kopii) zadaného Freezable pomocí aktuálních hodnot vlastností.

CoerceValue(DependencyProperty)

Převede hodnotu zadané vlastnosti závislosti. Toho se dosahuje vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastností pro vlastnost závislosti, protože existuje ve volání DependencyObject.

(Zděděno od DependencyObject)
CopyBackBuffer()

Vytvoří kopii D3DImagesoftwaru .

CreateInstance()

Inicializuje novou instanci Freezable třídy.

(Zděděno od Freezable)
CreateInstanceCore()

Při implementaci v odvozené třídě vytvoří novou instanci odvozené D3DImage třídy.

Equals(Object)

Určuje, zda je poskytnutá DependencyObject hodnota ekvivalentní aktuálnímu DependencyObject.

(Zděděno od DependencyObject)
Finalize()

Uvolní prostředky a provede další operace čištění před D3DImage uvolněním paměti.

Freeze()

Nastaví aktuální objekt jako nemodifikovatelný a nastaví jeho IsFrozen vlastnost na true.

(Zděděno od Freezable)
FreezeCore(Boolean)

Znemožní úpravu D3DImage nebo určí, zda je možné ji upravit.

GetAnimationBaseValue(DependencyProperty)

Vrátí ne animovanou hodnotu zadané DependencyPropertyhodnoty .

(Zděděno od Animatable)
GetAsFrozen()

Vytvoří zablokovanou kopii Freezablevlastnosti , pomocí základních (ne animovaných) hodnot vlastností. Vzhledem k tomu, že je kopie zablokovaná, všechny ukotvené dílčí objekty se zkopírují odkazem.

(Zděděno od Freezable)
GetAsFrozenCore(Freezable)

Vytvoří instanci ukotveným klonem zadaného Freezable pomocí základních (ne animovaných) hodnot vlastností.

GetCurrentValueAsFrozen()

Vytvoří ukotvenou kopii s použitím aktuálních Freezable hodnot vlastností. Vzhledem k tomu, že je kopie zablokovaná, všechny ukotvené dílčí objekty se zkopírují odkazem.

(Zděděno od Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Vytvoří aktuální instanci zmrazený klon zadaného Freezable. Pokud má objekt animované vlastnosti závislostí, jejich aktuální animované hodnoty se zkopírují.

GetHashCode()

Získá hash kód pro tento DependencyObject.

(Zděděno od DependencyObject)
GetLocalValueEnumerator()

Vytvoří specializovaný enumerátor pro určení, které vlastnosti závislosti mají místně nastavené hodnoty na tomto DependencyObject.

(Zděděno od DependencyObject)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
GetValue(DependencyProperty)

Vrátí aktuální efektivní hodnotu vlastnosti závislosti na této instanci objektu DependencyObject.

(Zděděno od DependencyObject)
InvalidateProperty(DependencyProperty)

Znovu vyhodnotí efektivní hodnotu pro zadanou vlastnost závislosti.

(Zděděno od DependencyObject)
Lock()

Uzamkne D3DImage a povolí operace v zadní vyrovnávací paměti.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
OnChanged()

Volá se při změně aktuálního Freezable objektu.

(Zděděno od Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určená k použití přímo z vašeho kódu.

(Zděděno od Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Zajišťuje, aby byly pro datový člen, který byl právě nastaven, vytvořeny DependencyObjectType příslušné kontextové ukazatele.

(Zděděno od Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Přepíše implementaci DependencyObjectOnPropertyChanged(DependencyPropertyChangedEventArgs) také vyvolat všechny Changed obslužné rutiny v reakci na měnící se závislost vlastnost typu Freezable.

(Zděděno od Freezable)
ReadLocalValue(DependencyProperty)

Vrátí místní hodnotu vlastnosti závislosti, pokud existuje.

(Zděděno od DependencyObject)
ReadPreamble()

Zajišťuje, že se k němu Freezable přistupuje z platného vlákna. Dědiče Freezable této metody musí volat tuto metodu na začátku jakéhokoli rozhraní API, které čte datové členy, které nejsou vlastnostmi závislosti.

(Zděděno od Freezable)
SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Přiřadí plochu Direct3D jako zdroj zadní vyrovnávací paměti.

SetBackBuffer(D3DResourceType, IntPtr)

Přiřadí plochu Direct3D jako zdroj zadní vyrovnávací paměti.

SetCurrentValue(DependencyProperty, Object)

Nastaví hodnotu vlastnosti závislosti beze změny jejího zdroje hodnot.

(Zděděno od DependencyObject)
SetValue(DependencyProperty, Object)

Nastaví místní hodnotu vlastnosti závislosti určenou jeho identifikátorem vlastnosti závislosti.

(Zděděno od DependencyObject)
SetValue(DependencyPropertyKey, Object)

Nastaví místní hodnotu vlastnosti závislosti jen pro čtení určenou identifikátorem DependencyPropertyKey vlastnosti závislosti.

(Zděděno od DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Vrátí hodnotu, která určuje, zda procesy serializace mají serializovat hodnotu pro zadanou vlastnost závislosti.

(Zděděno od DependencyObject)
ToString()

Vytvoří řetězcovou reprezentaci tohoto objektu na základě aktuální jazykové verze.

(Zděděno od ImageSource)
ToString(IFormatProvider)

Vytvoří řetězcovou reprezentaci tohoto objektu na základě předaného objektu IFormatProvider . Pokud je nullposkytovatel, použije se CurrentCulture .

(Zděděno od ImageSource)
TryLock(Duration)

Pokusí se uzamknout D3DImage a čekat na zadanou dobu trvání.

Unlock()

Dekrementuje počet zámků D3DImagepro .

VerifyAccess()

Vynucuje, že volající vlákno má přístup k tomuto DispatcherObject.

(Zděděno od DispatcherObject)
WritePostscript()

Changed Vyvolá událost pro událost Freezable a vyvolá její OnChanged() metodu. Třídy odvozené z Freezable by měly volat tuto metodu na konci jakéhokoli rozhraní API, které upravuje členy třídy, které nejsou uloženy jako vlastnosti závislosti.

(Zděděno od Freezable)
WritePreamble()

Ověřuje, že Freezable není zablokovaný a že k němu přistupujete z platného kontextu podprocesu. Freezable dědiče by měly tuto metodu volat na začátku jakéhokoli rozhraní API, které zapisuje do datových členů, které nejsou vlastnostmi závislosti.

(Zděděno od Freezable)

Událost

Name Description
Changed

Nastane, když Freezable je objekt, který obsahuje, změněn.

(Zděděno od Freezable)
IsFrontBufferAvailableChanged

Nastane, když se IsFrontBufferAvailable vlastnost změní.

Explicitní implementace rozhraní

Name Description
IFormattable.ToString(String, IFormatProvider)

Naformátuje hodnotu aktuální instance pomocí zadaného formátu.

(Zděděno od ImageSource)

Platí pro