Sdílet prostřednictvím


D3DImage Třída

Definice

Objekt ImageSource , který zobrazuje uživatelem vytvořený povrch 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 v D3DImage XAML. Obor názvů musíte namapovat System.Windows.Interop , protože není součástí výchozích oborů názvů XAML. Další informace najdete v tématu Návod: Hostování obsahu Direct3D9 ve 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 Použijte třídu k hostování obsahu Direct3D v aplikaci Windows Presentation Foundation (WPF).

Voláním Lock metody změňte obsah Direct3D zobrazený objektem D3DImage. Voláním SetBackBuffer metody přiřaďte plochu Direct3D objektu D3DImage. AddDirtyRect Volání metody ke sledování aktualizací na povrchu Direct3D. Voláním Unlock 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í vyrovnávací paměť je váš povrch Direct3D. Změny v zadní vyrovnávací paměti jsou zkopírovány dopředu do přední vyrovnávací paměti při volání Unlock metody, kde je zobrazena na hardwaru. V některých případech může být přední vyrovnávací paměť nedostupná. Příčinou této nedostupnosti může být uzamčení obrazovky, exkluzivní aplikace Direct3D na celou obrazovku, přepínání uživatelů nebo jiné systémové aktivity. Když k tomu dojde, aplikace WPF je upozorněna zpracováním IsFrontBufferAvailableChanged události. Způsob, jakým vaše aplikace reaguje na nedostupnost přední vyrovnávací paměti, závisí na tom, jestli je WPF povolené přecházet na vykreslování softwaru. Metoda SetBackBuffer má přetížení, které přebírá parametr, který určuje, zda WPF se vrátí k softwarovému vykreslování.

Reagování na nedostupnou přední vyrovnávací paměť, když WPF nepřesune na softwarové vykreslování

Když zavoláte SetBackBuffer(D3DResourceType, IntPtr) přetížení nebo zavoláte SetBackBuffer(D3DResourceType, IntPtr, Boolean) přetížení s parametrem enableSoftwareFallback 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 nezobrazí se nic. Jakmile je přední vyrovnávací paměť opět k dispozici, vykreslovací systém vyvolá IsFrontBufferAvailableChanged událost, která oznámí aplikaci WPF. Můžete vytvořit obslužnou rutinu IsFrontBufferAvailableChanged události, aby se znovu restartovala vykreslování s platnou plochou Direct3D. Pokud chcete znovu spustit vykreslování, musíte volat SetBackBuffer.

Reakce na nedostupnou přední vyrovnávací paměť, když WPF přejde zpět na vykreslování softwaru

Když zavoláte SetBackBuffer(D3DResourceType, IntPtr, Boolean) přetížení s parametrem enableSoftwareFallback nastaveným na true, zachová si vykreslovací systém svůj odkaz na zadní vyrovnávací paměť, když se přední vyrovnávací paměť stane nedostupnou, takže není nutné volat SetBackBuffer , když je přední vyrovnávací paměť znovu k dispozici. Můžou nastat situace, kdy se zařízení uživatele stane nedostupným. Když k tomu dojde, zavolejte SetBackBuffer vydání WPF odkaz na zadní vyrovnávací paměť. Pokud potřebujete zařízení obnovit do továrního nastavení, zavolejte SetBackBuffer s parametrem backBuffer nastaveným na nulla pak znovu zavolejte SetBackBuffer s nastaveným backBuffer na platnou plochu Direct3D.

Poznámka

Výkon do značné míry závisí na nastavení povrchu Direct3D. Další informace najdete v tématu Důležité informace o výkonu rozhraní Direct3D9 a interoperability WPF.

Poznámka

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

Konstruktory

D3DImage()

Inicializuje novou instanci D3DImage třídy .

D3DImage(Double, Double)

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

Pole

IsFrontBufferAvailableProperty

Identifikuje IsFrontBufferAvailable vlastnost závislosti.

Vlastnosti

CanFreeze

Získá hodnotu, která označuje, zda objekt lze změnit.

(Zděděno od Freezable)
DependencyObjectType

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

(Zděděno od DependencyObject)
Dispatcher

Získá to DispatcherDispatcherObject je přidružena k.

(Zděděno od DispatcherObject)
HasAnimatedProperties

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

(Zděděno od Animatable)
Height

Získá výšku objektu D3DImage.

IsFrontBufferAvailable

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

IsFrozen

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

(Zděděno od Freezable)
IsSealed

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

(Zděděno od DependencyObject)
Metadata

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

PixelHeight

Získá výšku objektu D3DImagev pixelech.

PixelWidth

Získá šířku objektu D3DImagev pixelech.

Width

Získá šířku objektu D3DImage.

Metody

AddDirtyRect(Int32Rect)

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

ApplyAnimationClock(DependencyProperty, AnimationClock)

Použije na AnimationClock zadanou DependencyPropertyhodnotu . Pokud je vlastnost už animovaná, SnapshotAndReplace použije se chování předání.

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

Použije na AnimationClock zadanou DependencyPropertyhodnotu . Pokud je vlastnost už animovaná, použije se zadaná HandoffBehavior vlastnost.

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

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

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

Použije animaci na zadaný objekt DependencyProperty. 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)
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á má být vymazána, je určena identifikátorem DependencyProperty .

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

Vymaže místní hodnotu vlastnosti jen pro čtení. Vlastnost, která se má vymazat, 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é již nemusí přeložit), ale ne animace nebo jejich aktuální hodnoty.

CloneCore(Freezable)

Vytvoří instanci klon (hloubkovou kopii) 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 zkopírují se jejich aktuální hodnoty.

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 dosáhne vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastnosti závislosti, protože existuje ve volajícím DependencyObjectobjektu .

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

Vytvoří softwarovou kopii .D3DImage

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 zadaný DependencyObject je ekvivalentní k 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 neupravitelný a nastaví jeho IsFrozen vlastnost na true.

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

Nastaví hodnotu jako D3DImage neupravovatelnou nebo určí, zda ji lze změnit jako neupravovatelnou.

GetAnimationBaseValue(DependencyProperty)

Vrátí ne animovanou hodnotu zadané DependencyPropertyhodnoty .

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

Vytvoří zamrzlou kopii objektu Freezables použitím základních (ne animovaných) hodnot vlastností. Vzhledem k tomu, že kopie je zamrzlá, jsou všechny ukotvené dílčí objekty zkopírovány odkazem.

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

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

GetCurrentValueAsFrozen()

Vytvoří zamrzlou kopii objektu Freezable s použitím aktuálních hodnot vlastností. Vzhledem k tomu, že kopie je zamrzlá, jsou všechny ukotvené dílčí objekty zkopírovány odkazem.

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

Vytvoří aktuální instanci zablokovaného klonu zadaného Freezableobjektu . Pokud má objekt animované vlastnosti závislostí, zkopírují se jeho aktuální animované hodnoty.

GetHashCode()

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

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

Vytvoří specializovaný enumerátor pro určení vlastností závislostí, které mají místně nastavené hodnoty v tomto DependencyObjectobjektu .

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

Type Získá z 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 se zadní vyrovnávací pamětí.

MemberwiseClone()

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

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

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

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

Zajišťuje, že jsou vytvořeny vhodné ukazatele kontextu pro DependencyObjectType datový člen, který byl právě nastaven.

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

Přepíše implementaci DependencyObject tak, OnPropertyChanged(DependencyPropertyChangedEventArgs) aby také vyvolala všechny Changed obslužné rutiny v reakci na měnící se vlastnost závislosti 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 Freezable se k souboru přistupuje z platného vlákna. Dědíci Freezable musí tuto metodu volat na začátku jakéhokoli rozhraní API, které čte datové členy, které nejsou vlastnosti závislostí.

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

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

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

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

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

Nastaví místní hodnotu vlastnosti závislosti určenou 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 DependencyPropertyKey identifikátorem vlastnosti závislosti.

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

Vrátí hodnotu, která označuje, zda serializační procesy 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 IFormatProvider na základě předaného. Pokud je nullzprostředkovatel , použije se CurrentCulture .

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

Pokusí se uzamknout D3DImage a počká po zadanou dobu.

Unlock()

Sníží 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 Freezable a vyvolá jeho OnChanged() metodu. Třídy odvozené z Freezable by měly tuto metodu volat 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 objekt není zamrznutý a že se k němu přistupuje z platného kontextu podprocesů. Freezable Dědiče by tuto metodu měli volat na začátku jakéhokoli rozhraní API, které zapisuje do datových členů, které nejsou vlastnosti závislostí.

(Zděděno od Freezable)

Událost

Changed

Vyvolá se při změně objektu Freezable nebo objektu, který obsahuje.

(Zděděno od Freezable)
IsFrontBufferAvailableChanged

Vyvolá se při IsFrontBufferAvailable změně vlastnosti.

Explicitní implementace rozhraní

IFormattable.ToString(String, IFormatProvider)

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

(Zděděno od ImageSource)

Platí pro