D3DImage Osztály

Definíció

Felhasználó ImageSource által létrehozott Direct3D-felületet megjelenítő felület.

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
Öröklődés

Példák

Az alábbi példakód bemutatja, hogyan deklarálhat egy D3DImage XAML-ben. Le kell képeznie a System.Windows.Interop névteret, mert az nem szerepel az alapértelmezett XAML-névterekben. További információ: Útmutató: Direct3D9-tartalom üzemeltetése a 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>

Megjegyzések

A D3DImage osztály használatával Direct3D-tartalmakat tárolhat egy Windows megjelenítési alaprendszer (WPF) alkalmazásban.

Hívja meg a metódust a Lock Direct3D-tartalom módosításához.D3DImage A metódus meghívása SetBackBuffer Direct3D-felület hozzárendeléséhez.D3DImage Hívja meg a metódust a AddDirtyRect Direct3D felület frissítéseinek nyomon követéséhez. Hívja meg a metódust a Unlock módosított területek megjelenítéséhez.

A D3DImage osztály két megjelenítési puffert kezel, amelyek az háttér-puffer és az előlap-puffer. Ez a hátsó puffer az Ön Direct3D felülete. A háttérpuffer módosításait a rendszer a Unlock metódus meghívásakor az első pufferbe másolja, ahol az megjelenik a hardveren. Időnként az első puffer elérhetetlenné válik. A rendelkezésre állás hiányát okozhatja a képernyőzárolás, a teljes képernyős exkluzív Direct3D-alkalmazások, a felhasználóváltás vagy más rendszertevékenységek. Ha ez történik, a WPF-alkalmazás értesítést kap a IsFrontBufferAvailableChanged esemény kezelésével. Az, hogy az alkalmazás hogyan reagál az első puffer elérhetetlenné válására, attól függ, hogy a WPF engedélyezve van-e a szoftveres renderelésre való visszalépéshez. A SetBackBuffer metódus túlterheléssel rendelkezik, amely egy paramétert használ, amely meghatározza, hogy a WPF visszaesik-e a szoftveres renderelésre.

Válasz egy nem elérhető előtérpufferre, ha WPF nem esik vissza a szoftveres renderelésre

Amikor a SetBackBuffer(D3DResourceType, IntPtr) túlterhelést hívja meg, vagy a SetBackBuffer(D3DResourceType, IntPtr, Boolean) túlterhelést a enableSoftwareFallback paraméter falseértékre állítja, a renderelő rendszer a háttérpufferre mutató hivatkozást bocsátja ki, amikor az első puffer elérhetetlenné válik, és semmi sem jelenik meg. Ha az első puffer ismét elérhető, a renderelő rendszer a IsFrontBufferAvailableChanged eseményt aktiválja, amely értesíti a WPF-alkalmazást. Létrehozhat egy eseménykezelőt a IsFrontBufferAvailableChanged eseményhez, hogy újrainduljon a renderelés egy érvényes Direct3D-felülettel. A renderelés újraindításához meg kell hívnia SetBackBuffer.

Válasz egy nem elérhető előtérpufferre, ha WPF visszaesik a szoftveres renderelésre

Amikor a SetBackBuffer(D3DResourceType, IntPtr, Boolean) túlterhelést a enableSoftwareFallback paraméter trueértékre állítja, a renderelő rendszer megőrzi a háttérpufferre mutató hivatkozását, amikor az első puffer elérhetetlenné válik, így nem kell meghívni SetBackBuffer, ha az első puffer ismét elérhető. Előfordulhat, hogy a felhasználó eszköze elérhetetlenné válik. Ha ez történik, hívja meg SetBackBuffer, hogy engedje fel WPF hivatkozását a háttérpufferre. Ha alaphelyzetbe kell állítania az eszközt, hívja meg a SetBackBuffer parancsot a backBuffer paramétert null-re állítva, majd hívja meg ismét a SetBackBuffer-at, és állítsa a backBuffer-et egy érvényes Direct3D felületre.

Note

A teljesítmény nagyban függ a Direct3D felület beállításaitól. További információkért lásd: A Direct3D9 és a WPF interoperabilitási teljesítményszempontjai.

Note

A D3DImage osztály nem jelenít meg Direct3D-tartalmat, ha WPF szoftverben, például Távoli asztal kapcsolaton keresztül jeleníti meg, kivéve, ha meghívja SetBackBuffer(D3DResourceType, IntPtr, Boolean), és nem adja meg a true paraméterhez tartozó enableSoftwareFallback.

Konstruktorok

Name Description
D3DImage()

Inicializálja a D3DImage osztály új példányát.

D3DImage(Double, Double)

Inicializálja az osztály új példányát D3DImage a megadott megjelenítési felbontással.

Mezők

Name Description
IsFrontBufferAvailableProperty

Azonosítja a IsFrontBufferAvailable függőségi tulajdonságot.

Tulajdonságok

Name Description
CanFreeze

Olyan értéket kap, amely jelzi, hogy az objektum módosítható-e.

(Öröklődés forrása Freezable)
DependencyObjectType

Lekéri a DependencyObjectType példány CLR-típusát körbefuttatót.

(Öröklődés forrása DependencyObject)
Dispatcher

Lekérdezi, Dispatcher hogy ez a társítva van-e DispatcherObject .

(Öröklődés forrása DispatcherObject)
HasAnimatedProperties

Olyan értéket kap, amely jelzi, hogy egy vagy több AnimationClock objektum társítva van-e az objektum függőségi tulajdonságainak bármelyikéhez.

(Öröklődés forrása Animatable)
Height

Lekéri a magasságot a D3DImage.

IsFrontBufferAvailable

Beolvas egy értéket, amely jelzi, hogy létezik-e előtérpuffer.

IsFrozen

Olyan értéket kap, amely jelzi, hogy az objektum jelenleg módosítható-e.

(Öröklődés forrása Freezable)
IsSealed

Olyan értéket kap, amely jelzi, hogy a példány jelenleg zárolva van-e (írásvédett).

(Öröklődés forrása DependencyObject)
Metadata

Lekéri a képforráshoz társított metaadatokat.

PixelHeight

A képpontok magasságát D3DImageadja meg.

PixelWidth

A képpontok szélességét D3DImageadja meg.

Width

Lekéri a szélességét.D3DImage

Metódusok

Name Description
AddDirtyRect(Int32Rect)

A módosított háttérpuffer területét adja meg.

ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

Alkalmazza AnimationClock a megadott DependencyProperty. Ha a tulajdonság már animálva van, a rendszer a megadott HandoffBehavior értéket használja.

(Öröklődés forrása Animatable)
ApplyAnimationClock(DependencyProperty, AnimationClock)

Alkalmazza AnimationClock a megadott DependencyProperty. Ha a tulajdonság már animálva van, a rendszer az SnapshotAndReplace átadási viselkedést használja.

(Öröklődés forrása Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Animációt alkalmaz a megadottra DependencyProperty. Az animáció a következő képkocka megjelenítésekor indul el. Ha a megadott tulajdonság már animálva van, a rendszer a megadott HandoffBehavior tulajdonságot használja.

(Öröklődés forrása Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline)

Animációt alkalmaz a megadottra DependencyProperty. Az animáció a következő képkocka megjelenítésekor indul el. Ha a megadott tulajdonság már animálva van, a rendszer az SnapshotAndReplace átadási viselkedést használja.

(Öröklődés forrása Animatable)
CheckAccess()

Meghatározza, hogy a hívó szál hozzáfér-e ehhez DispatcherObject.

(Öröklődés forrása DispatcherObject)
ClearValue(DependencyProperty)

Törli egy tulajdonság helyi értékét. A törölni kívánt tulajdonságot egy DependencyProperty azonosító határozza meg.

(Öröklődés forrása DependencyObject)
ClearValue(DependencyPropertyKey)

Törli egy írásvédett tulajdonság helyi értékét. A törölni kívánt tulajdonságot egy DependencyPropertyKey.

(Öröklődés forrása DependencyObject)
Clone()

Módosítható klónt hoz létre az D3DImage objektumról, amely részletes másolatokat készít az objektum értékeiről. A függőségi tulajdonságok másolása során ez a metódus erőforrás-hivatkozásokat és adatkötéseket másol (amelyek már nem oldhatók fel), de az animációkat és az aktuális értékeket nem.

CloneCore(Freezable)

A példányt a megadott Freezable klónként (mélymásolatként) hozza létre alap (nem animált) tulajdonságértékek használatával.

CloneCurrentValue()

Módosítható klónt hoz létre az D3DImage objektumról, amely részletes másolatokat készít az objektum aktuális értékeiről. Az erőforráshivatkozások, adatkötések és animációk nem lesznek másolva, de az aktuális értékeket a program másolja.

CloneCurrentValueCore(Freezable)

A példányt módosítható klónként (mély másolatként) adja meg a megadott Freezable értékekkel.

CoerceValue(DependencyProperty)

A megadott függőségi tulajdonság értékét kényszeríti. Ez úgy érhető el, hogy meghívja a függőségi tulajdonság tulajdonság metaadataiban megadott függvényeket CoerceValueCallback a hívás DependencyObjectsorán.

(Öröklődés forrása DependencyObject)
CopyBackBuffer()

Létrehozza a szoftver másolatát a D3DImage.

CreateInstance()

Inicializálja a Freezable osztály új példányát.

(Öröklődés forrása Freezable)
CreateInstanceCore()

Ha egy származtatott osztályban implementálják, a származtatott osztály új példányát D3DImage hozza létre.

Equals(Object)

Meghatározza, hogy a megadott DependencyObject érték megegyezik-e az aktuális DependencyObjectértékével.

(Öröklődés forrása DependencyObject)
Finalize()

Felszabadítja az erőforrásokat, és egyéb tisztítási műveleteket hajt végre, mielőtt a D3DImage szemétgyűjtés visszanyeri azt.

Freeze()

Az aktuális objektum nem módosítható, és a tulajdonságát a következőre IsFrozenállítjatrue: .

(Öröklődés forrása Freezable)
FreezeCore(Boolean)

A nem módosíthatóvá teszi a D3DImage elemet, vagy meghatározza, hogy módosítható-e.

GetAnimationBaseValue(DependencyProperty)

A megadott DependencyPropertyérték nem animált értékét adja vissza.

(Öröklődés forrása Animatable)
GetAsFrozen()

Az alaptulajdonságok Freezable(nem animált) értékeinek egy fagyasztott másolatát hozza létre. Mivel a másolat le van fagyasztva, a program hivatkozással másolja a befagyott alobjektumokat.

(Öröklődés forrása Freezable)
GetAsFrozenCore(Freezable)

A példányt a megadott Freezable , alapszintű (nem animált) tulajdonságértékekkel zárolt klónává teszi.

GetCurrentValueAsFrozen()

Az aktuális tulajdonságértékek fagyasztott másolatát Freezable hozza létre. Mivel a másolat le van fagyasztva, a program hivatkozással másolja a befagyott alobjektumokat.

(Öröklődés forrása Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Az aktuális példányt a megadott Freezablezárolt klónává teszi. Ha az objektum animált függőségi tulajdonságokkal rendelkezik, a program átmásolja az aktuális animált értékeket.

GetHashCode()

Ehhez lekéri a DependencyObjectkivonatkódot.

(Öröklődés forrása DependencyObject)
GetLocalValueEnumerator()

Létrehoz egy speciális enumerátort annak meghatározásához, hogy mely függőségi tulajdonságok rendelkeznek helyileg beállított értékekkel.DependencyObject

(Öröklődés forrása DependencyObject)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
GetValue(DependencyProperty)

Egy függőségi tulajdonság aktuális tényleges értékét adja vissza az adott példányon DependencyObject.

(Öröklődés forrása DependencyObject)
InvalidateProperty(DependencyProperty)

Újra kiértékeli a megadott függőségi tulajdonság tényleges értékét.

(Öröklődés forrása DependencyObject)
Lock()

Zárolja a D3DImage háttérpuffert, és engedélyezi a műveleteket.

MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
OnChanged()

Az aktuális Freezable objektum módosításakor hívható meg.

(Öröklődés forrása Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Ez a tag támogatja a Windows megjelenítési alaprendszer (WPF) infrastruktúrát, és nem közvetlenül a kódból való használatra szolgál.

(Öröklődés forrása Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Biztosítja, hogy a megfelelő környezeti mutatók létre legyenek hozva az DependencyObjectType éppen beállított adattagok számára.

(Öröklődés forrása Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Felülbírálja a DependencyObject változó típusú függőségi tulajdonságra válaszul a kezelők meghívásának OnPropertyChanged(DependencyPropertyChangedEventArgs)Changedvégrehajtását Freezable is.

(Öröklődés forrása Freezable)
ReadLocalValue(DependencyProperty)

Egy függőségi tulajdonság helyi értékét adja vissza, ha létezik.

(Öröklődés forrása DependencyObject)
ReadPreamble()

Biztosítja, hogy a Freezable rendszer érvényes szálról legyen elérhető. A metódus öröklőinek Freezable minden olyan API elején meg kell hívniuk ezt a metódust, amely olyan adattagokat olvas be, amelyek nem függőségi tulajdonságok.

(Öröklődés forrása Freezable)
SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Direct3D-felületet rendel hozzá a háttérpuffer forrásaként.

SetBackBuffer(D3DResourceType, IntPtr)

Direct3D-felületet rendel hozzá a háttérpuffer forrásaként.

SetCurrentValue(DependencyProperty, Object)

Beállítja egy függőségi tulajdonság értékét az értékforrás módosítása nélkül.

(Öröklődés forrása DependencyObject)
SetValue(DependencyProperty, Object)

Beállítja egy függőségi tulajdonság helyi értékét, amelyet a függőségi tulajdonság azonosítója határoz meg.

(Öröklődés forrása DependencyObject)
SetValue(DependencyPropertyKey, Object)

Beállítja egy írásvédett függőség tulajdonság helyi értékét, amelyet a DependencyPropertyKey függőségi tulajdonság azonosítója határoz meg.

(Öröklődés forrása DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Olyan értéket ad vissza, amely jelzi, hogy a szerializálási folyamatok szerializálják-e a megadott függőségi tulajdonság értékét.

(Öröklődés forrása DependencyObject)
ToString()

Az objektum sztring-ábrázolását hozza létre az aktuális kultúra alapján.

(Öröklődés forrása ImageSource)
ToString(IFormatProvider)

Sztringképet hoz létre az objektumról az IFormatProvider átadott fájl alapján. Ha a szolgáltató az null, akkor a rendszer használja a szolgáltatót CurrentCulture .

(Öröklődés forrása ImageSource)
TryLock(Duration)

Megpróbálja zárolni a D3DImage megadott időtartamot, és várakozik.

Unlock()

A zárolások számának megcétlése a D3DImage.

VerifyAccess()

Kényszeríti, hogy a hívószál hozzáférhessen ehhez.DispatcherObject

(Öröklődés forrása DispatcherObject)
WritePostscript()

Elindítja az Changed eseményt, Freezable és meghívja annak metódusát OnChanged() . A származtatott Freezable osztályoknak ezt a metódust minden olyan API végén kell meghívni, amely módosítja a nem függőségi tulajdonságokként tárolt osztálytagokat.

(Öröklődés forrása Freezable)
WritePreamble()

Ellenőrzi, hogy a Freezable rendszer nem zárolta-e a elemet, és hogy az érvényes szálkezelési környezetből van-e elérhető. Freezable Az öröklőknek ezt a metódust minden olyan API elején kell meghívni, amely nem függőségi tulajdonságokat tartalmazó adattagoknak ír.

(Öröklődés forrása Freezable)

esemény

Name Description
Changed

Akkor fordul elő, ha a Freezable benne lévő objektum vagy objektum módosul.

(Öröklődés forrása Freezable)
IsFrontBufferAvailableChanged

A tulajdonság megváltozásakor IsFrontBufferAvailable fordul elő.

Explicit interfész-implementációk

Name Description
IFormattable.ToString(String, IFormatProvider)

Formázza az aktuális példány értékét a megadott formátummal.

(Öröklődés forrása ImageSource)

A következőre érvényes: