D3DImage Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
En ImageSource som visar en användarskapad Direct3D-yta.
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
- Arv
Exempel
Följande kodexempel visar hur du deklarerar en D3DImage i XAML. Du måste mappa namnområdet System.Windows.Interop eftersom det inte ingår i XAML-standardnamnrymderna. För mer information, se Genomgång: Som värd för Direct3D9-innehåll i 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>
Kommentarer
Använd klassen D3DImage för att vara värd för Direct3D-innehåll i ett Windows Presentation Foundation-program (WPF).
Lock Anropa metoden för att ändra Direct3D-innehållet som visas av D3DImage. SetBackBuffer Anropa metoden för att tilldela en Direct3D-yta till en D3DImage. AddDirtyRect Anropa metoden för att spåra uppdateringar till Direct3D-ytan. Unlock Anropa metoden för att visa de ändrade områdena.
Klassen D3DImage hanterar två visningsbuffertar, som kallas bakre buffert och främre buffert. Den bakre bufferten är din Direct3D-yta. Ändringar i den bakre bufferten kopieras framåt till den främre bufferten när du anropar metoden Unlock, där den visas på maskinvaran. Ibland blir den främre bufferten otillgänglig. Den här bristen på tillgänglighet kan orsakas av skärmlåsning, fullskärms exklusiva Direct3D-program, användarväxling eller andra systemaktiviteter. När detta inträffar meddelas ditt WPF-program genom att hantera händelsen IsFrontBufferAvailableChanged. Hur programmet svarar på att den främre bufferten blir otillgänglig beror på om WPF har aktiverats för att återgå till programvarurendering. Metoden SetBackBuffer har en överlagrad form som tar en parameter som anger om WPF ska återgå till programvarurendering.
Svara på en otillgänglig frontbuffert när WPF inte återgår till programvarurendering
När du anropar SetBackBuffer(D3DResourceType, IntPtr) överladdning eller SetBackBuffer(D3DResourceType, IntPtr, Boolean) överladdning med parametern enableSoftwareFallback satt till false, släpper återgivningssystemet sin referens till den bakre bufferten när den främre bufferten blir otillgänglig och inget visas. När den främre bufferten är tillgänglig igen genererar renderingssystemet den IsFrontBufferAvailableChanged händelsen för att meddela WPF-programmet. Du kan skapa en händelsehanterare för den IsFrontBufferAvailableChanged händelsen för att starta om återgivningen med en giltig Direct3D-yta. Om du vill starta om renderingen måste du anropa SetBackBuffer.
Svara på en otillgänglig frontbuffert när WPF återgår till programvarurendering
När du anropar SetBackBuffer(D3DResourceType, IntPtr, Boolean) överlagring med parametern enableSoftwareFallback inställd på truebehåller återgivningssystemet sin referens till den bakre bufferten när den främre bufferten blir otillgänglig, så det finns ingen anledning att anropa SetBackBuffer när den främre bufferten är tillgänglig igen. Det kan finnas situationer där användarens enhet blir otillgänglig. När detta inträffar anropar du SetBackBuffer för att frigöra WPF referens till serverbufferten. Om du behöver återställa enheten anropar du SetBackBuffer med parametern backBuffer inställd på nulloch anropar sedan SetBackBuffer igen med backBuffer inställt på en giltig Direct3D-yta.
Note
Prestanda beror mycket på inställningarna för Direct3D-ytan. Mer information finns i prestandaöverväganden för Direct3D9 och WPF Interoperability.
Note
Klassen D3DImage visar inte Direct3D-innehåll när WPF återges i programvara, till exempel via en Fjärrskrivbord anslutning, såvida du inte anropar SetBackBuffer(D3DResourceType, IntPtr, Boolean) och anger true för parametern enableSoftwareFallback.
Konstruktorer
| Name | Description |
|---|---|
| D3DImage() |
Initierar en ny instans av D3DImage klassen. |
| D3DImage(Double, Double) |
Initierar en ny instans av D3DImage klassen med den angivna visningsupplösningen. |
Fält
| Name | Description |
|---|---|
| IsFrontBufferAvailableProperty |
Identifierar beroendeegenskapen IsFrontBufferAvailable . |
Egenskaper
| Name | Description |
|---|---|
| CanFreeze |
Hämtar ett värde som anger om objektet kan göras ommodifierbart. (Ärvd från Freezable) |
| DependencyObjectType |
DependencyObjectType Hämtar som omsluter CLR-typen för den här instansen. (Ärvd från DependencyObject) |
| Dispatcher |
Hämtar det Dispatcher som DispatcherObject är associerat med. (Ärvd från DispatcherObject) |
| HasAnimatedProperties |
Hämtar ett värde som anger om ett eller flera AnimationClock objekt är associerade med något av det här objektets beroendeegenskaper. (Ärvd från Animatable) |
| Height |
Hämtar höjden på D3DImage. |
| IsFrontBufferAvailable |
Hämtar ett värde som anger om det finns en frontbuffert. |
| IsFrozen |
Hämtar ett värde som anger om objektet för närvarande kan ändras. (Ärvd från Freezable) |
| IsSealed |
Hämtar ett värde som anger om den här instansen för närvarande är förseglad (skrivskyddad). (Ärvd från DependencyObject) |
| Metadata |
Hämtar metadata som är associerade med bildkällan. |
| PixelHeight |
Hämtar höjden på D3DImage, i bildpunkter. |
| PixelWidth |
Hämtar bredden på D3DImage, i bildpunkter. |
| Width |
Hämtar bredden på D3DImage. |
Metoder
| Name | Description |
|---|---|
| AddDirtyRect(Int32Rect) |
Anger området för den bakåtbuffert som ändrades. |
| ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) |
Tillämpar en AnimationClock på den angivna DependencyProperty. Om egenskapen redan är animerad används den angivna HandoffBehavior . (Ärvd från Animatable) |
| ApplyAnimationClock(DependencyProperty, AnimationClock) |
Tillämpar en AnimationClock på den angivna DependencyProperty. Om egenskapen redan är animerad används överlämningsbeteendet SnapshotAndReplace . (Ärvd från Animatable) |
| BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) |
Tillämpar en animering på den angivna DependencyProperty. Animeringen startas när nästa bildruta återges. Om den angivna egenskapen redan är animerad används den angivna HandoffBehavior egenskapen. (Ärvd från Animatable) |
| BeginAnimation(DependencyProperty, AnimationTimeline) |
Tillämpar en animering på den angivna DependencyProperty. Animeringen startas när nästa bildruta återges. Om den angivna egenskapen redan är animerad används överlämningsbeteendet SnapshotAndReplace . (Ärvd från Animatable) |
| CheckAccess() |
Avgör om den anropande tråden har åtkomst till den här DispatcherObject. (Ärvd från DispatcherObject) |
| ClearValue(DependencyProperty) |
Rensar det lokala värdet för en egenskap. Egenskapen som ska rensas anges av en DependencyProperty identifierare. (Ärvd från DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Rensar det lokala värdet för en skrivskyddad egenskap. Egenskapen som ska rensas anges av en DependencyPropertyKey. (Ärvd från DependencyObject) |
| Clone() |
Skapar en modifierbar klon av det här D3DImage objektet, vilket gör djupa kopior av objektets värden. När du kopierar beroendeegenskaper kopierar den här metoden resursreferenser och databindningar (som kanske inte längre matchar), men inte animeringar eller deras aktuella värden. |
| CloneCore(Freezable) |
Gör instansen till en klon (djupkopia) av de angivna Freezable med hjälp av grundläggande (icke-animerade) egenskapsvärden. |
| CloneCurrentValue() |
Skapar en modifierbar klon av det här D3DImage objektet, vilket gör djupa kopior av objektets aktuella värden. Resursreferenser, databindningar och animeringar kopieras inte, men deras aktuella värden kopieras. |
| CloneCurrentValueCore(Freezable) |
Gör instansen till en modifierbar klon (djupkopia) av den angivna Freezable med hjälp av aktuella egenskapsvärden. |
| CoerceValue(DependencyProperty) |
Tvingar fram värdet för den angivna beroendeegenskapen. Detta uppnås genom att anropa alla CoerceValueCallback funktioner som anges i egenskapsmetadata för beroendeegenskapen eftersom den finns på anropet DependencyObject. (Ärvd från DependencyObject) |
| CopyBackBuffer() |
Skapar en programvarukopia av D3DImage. |
| CreateInstance() |
Initierar en ny instans av Freezable klassen. (Ärvd från Freezable) |
| CreateInstanceCore() |
När den implementeras i en härledd klass skapar du en ny instans av den D3DImage härledda klassen. |
| Equals(Object) |
Avgör om en angivet DependencyObject motsvarar den aktuella DependencyObject. (Ärvd från DependencyObject) |
| Finalize() |
Frigör resurser och utför andra rensningsåtgärder innan de D3DImage frigörs av skräpinsamlingen. |
| Freeze() |
Gör det aktuella objektet ommodifierbart och anger dess IsFrozen egenskap till |
| FreezeCore(Boolean) |
Gör det D3DImage ommodifierbart eller avgör om det kan göras ommodifierbart. |
| GetAnimationBaseValue(DependencyProperty) |
Returnerar det icke-animerade värdet för det angivna DependencyProperty. (Ärvd från Animatable) |
| GetAsFrozen() |
Skapar en frusen Freezablekopia av , med hjälp av grundläggande (icke-animerade) egenskapsvärden. Eftersom kopian är låst kopieras alla frysta underobjekt som referens. (Ärvd från Freezable) |
| GetAsFrozenCore(Freezable) |
Gör instansen till en frusen klon av den angivna Freezable med hjälp av grundläggande (icke-animerade) egenskapsvärden. |
| GetCurrentValueAsFrozen() |
Skapar en frusen Freezable kopia av med aktuella egenskapsvärden. Eftersom kopian är låst kopieras alla frysta underobjekt som referens. (Ärvd från Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Gör den aktuella instansen till en frusen klon av den angivna Freezable. Om objektet har animerade beroendeegenskaper kopieras deras aktuella animerade värden. |
| GetHashCode() |
Hämtar en hash-kod för den här DependencyObject. (Ärvd från DependencyObject) |
| GetLocalValueEnumerator() |
Skapar en specialiserad uppräknare för att avgöra vilka beroendeegenskaper som har lokalt angivna värden för den här DependencyObject. (Ärvd från DependencyObject) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| GetValue(DependencyProperty) |
Returnerar det aktuella effektiva värdet för en beroendeegenskap för den här instansen av en DependencyObject. (Ärvd från DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Utvärderar det effektiva värdet för den angivna beroendeegenskapen igen. (Ärvd från DependencyObject) |
| Lock() |
D3DImage Låser och aktiverar åtgärder på den bakre bufferten. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| OnChanged() |
Anropas när det aktuella Freezable objektet ändras. (Ärvd från Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Den här medlemmen stöder infrastrukturen för Windows Presentation Foundation (WPF) och är inte avsedd att användas direkt från koden. (Ärvd från Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Ser till att lämpliga kontextpekare upprättas för en DependencyObjectType datamedlem som just har angetts. (Ärvd från Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Åsidosätter implementeringen DependencyObject av OnPropertyChanged(DependencyPropertyChangedEventArgs) för att även anropa alla Changed hanterare som svar på en ändrad beroendeegenskap av typen Freezable. (Ärvd från Freezable) |
| ReadLocalValue(DependencyProperty) |
Returnerar det lokala värdet för en beroendeegenskap, om den finns. (Ärvd från DependencyObject) |
| ReadPreamble() |
Säkerställer att åtkomsten Freezable görs från en giltig tråd. Arvtagare Freezable till måste anropa den här metoden i början av ett API som läser datamedlemmar som inte är beroendeegenskaper. (Ärvd från Freezable) |
| SetBackBuffer(D3DResourceType, IntPtr, Boolean) |
Tilldelar en Direct3D-yta som källa för den bakre bufferten. |
| SetBackBuffer(D3DResourceType, IntPtr) |
Tilldelar en Direct3D-yta som källa för den bakre bufferten. |
| SetCurrentValue(DependencyProperty, Object) |
Anger värdet för en beroendeegenskap utan att ändra dess värdekälla. (Ärvd från DependencyObject) |
| SetValue(DependencyProperty, Object) |
Anger det lokala värdet för en beroendeegenskap som anges av dess beroendeegenskapsidentifierare. (Ärvd från DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Anger det lokala värdet för en skrivskyddad beroendeegenskap som anges av identifieraren DependencyPropertyKey för beroendeegenskapen. (Ärvd från DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Returnerar ett värde som anger om serialiseringsprocesser ska serialisera värdet för den angivna beroendeegenskapen. (Ärvd från DependencyObject) |
| ToString() |
Skapar en strängrepresentation av det här objektet baserat på den aktuella kulturen. (Ärvd från ImageSource) |
| ToString(IFormatProvider) |
Skapar en strängrepresentation av det här objektet baserat på det IFormatProvider skickade objektet. Om providern är |
| TryLock(Duration) |
Försöker låsa D3DImage och väntar under den angivna varaktigheten. |
| Unlock() |
Minskar antalet lås för D3DImage. |
| VerifyAccess() |
Framtvingar att den anropande tråden har åtkomst till den här DispatcherObject. (Ärvd från DispatcherObject) |
| WritePostscript() |
Genererar Changed händelsen för Freezable och anropar dess OnChanged() metod. Klasser som härleds från Freezable bör anropa den här metoden i slutet av alla API:er som ändrar klassmedlemmar som inte lagras som beroendeegenskaper. (Ärvd från Freezable) |
| WritePreamble() |
Verifierar att Freezable inte är låst och att den nås från en giltig trådkontext. Freezable ärver bör anropa den här metoden i början av ett API som skriver till datamedlemmar som inte är beroendeegenskaper. (Ärvd från Freezable) |
Händelser
| Name | Description |
|---|---|
| Changed |
Inträffar när eller Freezable ett objekt som det innehåller ändras. (Ärvd från Freezable) |
| IsFrontBufferAvailableChanged |
Inträffar när egenskapen IsFrontBufferAvailable ändras. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IFormattable.ToString(String, IFormatProvider) |
Formaterar värdet för den aktuella instansen med det angivna formatet. (Ärvd från ImageSource) |