Share via


D3DImage Sınıf

Tanım

ImageSource Kullanıcı tarafından oluşturulan Bir Direct3D yüzeyi görüntüleyen.

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
Devralma

Örnekler

Aşağıdaki kod örneği, XAML içinde bir D3DImage bildiriminin nasıl yapılacağını gösterir. Varsayılan XAML ad alanlarına dahil edilmediğinden ad alanını eşlemeniz System.Windows.Interop gerekir. Daha fazla bilgi için bkz. İzlenecek yol: WPF'de Direct3D9 İçeriği Barındırma.

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

Açıklamalar

D3DImage Windows Presentation Foundation (WPF) uygulamasında Direct3D içeriğini barındırmak için sınıfını kullanın.

Lock tarafından görüntülenen Direct3D içeriğini değiştirmek için yöntemini çağırınD3DImage. SetBackBuffer bir direct3D yüzeyi atamak için D3DImageyöntemini çağırın. Direct3D yüzeyindeki AddDirtyRect güncelleştirmeleri izlemek için yöntemini çağırın. Unlock Değiştirilen alanları görüntülemek için yöntemini çağırın.

D3DImage sınıfı, arka arabellek ve ön arabellek olarak adlandırılan iki görüntü arabelleği yönetir. Arka tampon, Direct3D yüzeyinizdir. Arka arabellekte yapılan değişiklikler, yöntemi çağırdığınızda Unlock ön arabelleğe kopyalanır ve burada donanımda görüntülenir. Bazen ön arabellek kullanılamaz duruma gelir. Bu kullanılabilirlik eksikliği ekran kilitleme, tam ekrana özel Direct3D uygulamaları, kullanıcı değiştirme veya diğer sistem etkinliklerinden kaynaklanabilir. Bu durumda WPF uygulamanıza olayı işleyerek IsFrontBufferAvailableChanged bildirim gönderilir. Uygulamanızın ön arabelleğin kullanılamaz duruma gelmesine nasıl yanıt verdiği, WPF'nin yazılım işlemeye geri dönmek için etkinleştirilip etkinleştirilmediğine bağlıdır. yönteminin SetBackBuffer , WPF'nin yazılım işlemeye geri dönüp dönmediğini belirten bir parametre alan bir aşırı yüklemesi vardır.

WPF Yazılım İşlemeye Geri Dönmediğinde Kullanılamayan Ön AraBelleğe Yanıt Verme

Aşırı yüklemeyi çağırdığınızda SetBackBuffer(D3DResourceType, IntPtr) veya parametresi olarak ayarlandığında falseaşırı yüklemeyi enableSoftwareFallback çağırdığınızdaSetBackBuffer(D3DResourceType, IntPtr, Boolean), ön arabellek kullanılamaz hale geldiğinde ve hiçbir şey görüntülenmediğinde işleme sistemi arka arabelleğe başvurusunu serbest bırakır. Ön arabellek yeniden kullanılabilir olduğunda, işleme sistemi WPF uygulamanızı bilgilendirmek için olayı tetikler IsFrontBufferAvailableChanged . Geçerli bir Direct3D yüzeyiyle işlemeyi IsFrontBufferAvailableChanged yeniden başlatmak için olay işleyicisi oluşturabilirsiniz. İşlemeyi yeniden başlatmak için öğesini çağırmanız SetBackBuffergerekir.

WPF Yazılım İşlemeye Geri Döndüğünde Kullanılamayan Ön AraBelleğe Yanıt Verme

parametresinin ayarlandığı trueaşırı yüklemeyi enableSoftwareFallback çağırdığınızdaSetBackBuffer(D3DResourceType, IntPtr, Boolean), ön arabellek kullanılamaz duruma geldiğinde işleme sistemi arka arabelleğe başvurusunu korur, bu nedenle ön arabellek yeniden kullanılabilir olduğunda çağrı SetBackBuffer yapmanız gerekmez. Kullanıcının cihazının kullanılamadığı durumlar olabilir. Bu durumda, WPF'nin arka arabelleğe başvuruyu serbest bırakmak için çağrısında SetBackBuffer bulunur. Cihazınızı sıfırlamanız gerekiyorsa parametresi olarak ayarlanmış nullolarak çağırın SetBackBufferbackBuffer ve ardından geçerli bir Direct3D yüzeyine ayarlanmış olarak yeniden backBuffer çağırınSetBackBuffer.

Not

Performans, Direct3D yüzeyinin ayarlarına büyük ölçüde bağlıdır. Daha fazla bilgi için bkz. Direct3D9 ve WPF Birlikte Çalışabilirliği için Performans Konuları.

Not

D3DImage Parametresini çağırıp SetBackBuffer(D3DResourceType, IntPtr, Boolean) belirtmediğiniz trueenableSoftwareFallback sürece, WPF Uzak Masaüstü bağlantısı gibi bir yazılımda işlendiğinde sınıfı Direct3D içeriği görüntülemez.

Oluşturucular

D3DImage()

D3DImage sınıfının yeni bir örneğini başlatır.

D3DImage(Double, Double)

Belirtilen görüntü çözünürlüğüyle sınıfının yeni bir örneğini D3DImage başlatır.

Alanlar

IsFrontBufferAvailableProperty

IsFrontBufferAvailable Bağımlılık özelliğini tanımlar.

Özellikler

CanFreeze

Nesnenin değiştirilemez hale getirilip getirilemeyeceğini belirten bir değer alır.

(Devralındığı yer: Freezable)
DependencyObjectType

DependencyObjectType Bu örneğin CLR türünü sarmalayan öğesini alır.

(Devralındığı yer: DependencyObject)
Dispatcher

Dispatcher Bunun DispatcherObject ilişkili olduğunu alır.

(Devralındığı yer: DispatcherObject)
HasAnimatedProperties

Bir veya daha fazla AnimationClock nesnenin bu nesnenin bağımlılık özelliklerinden herhangi biriyle ilişkilendirilip ilişkilendirildiğini belirten bir değer alır.

(Devralındığı yer: Animatable)
Height

değerinin yüksekliğini D3DImagealır.

IsFrontBufferAvailable

Ön arabelleğin var olup olmadığını gösteren bir değer alır.

IsFrozen

Nesnenin şu anda değiştirilebilir olup olmadığını gösteren bir değer alır.

(Devralındığı yer: Freezable)
IsSealed

Bu örneğin şu anda korumalı olup olmadığını belirten bir değer alır (salt okunur).

(Devralındığı yer: DependencyObject)
Metadata

Görüntü kaynağıyla ilişkili meta verileri alır.

PixelHeight

piksel cinsinden değerinin D3DImageyüksekliğini alır.

PixelWidth

piksel cinsinden genişliğini D3DImagealır.

Width

genişliğini D3DImagealır.

Yöntemler

AddDirtyRect(Int32Rect)

Geri arabelleğinin değişen alanını belirtir.

ApplyAnimationClock(DependencyProperty, AnimationClock)

Belirtilen DependencyPropertyöğesine bir AnimationClock uygular. Özellik zaten animasyonluysa, iletim SnapshotAndReplace davranışı kullanılır.

(Devralındığı yer: Animatable)
ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

Belirtilen DependencyPropertyöğesine bir AnimationClock uygular. Özellik zaten animasyonluysa, belirtilen HandoffBehavior kullanılır.

(Devralındığı yer: Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline)

Belirtilen DependencyPropertyöğesine bir animasyon uygular. Animasyon, bir sonraki kare işlendiğinde başlatılır. Belirtilen özellik zaten animasyonluysa, SnapshotAndReplace iletim davranışı kullanılır.

(Devralındığı yer: Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Belirtilen DependencyPropertyöğesine bir animasyon uygular. Animasyon, bir sonraki kare işlendiğinde başlatılır. Belirtilen özellik zaten animasyonluysa, belirtilen HandoffBehavior kullanılır.

(Devralındığı yer: Animatable)
CheckAccess()

Çağıran iş parçacığının bu DispatcherObjectöğesine erişimi olup olmadığını belirler.

(Devralındığı yer: DispatcherObject)
ClearValue(DependencyProperty)

Bir özelliğin yerel değerini temizler. Temizlenecek özellik bir DependencyProperty tanımlayıcı tarafından belirtilir.

(Devralındığı yer: DependencyObject)
ClearValue(DependencyPropertyKey)

Salt okunur özelliğin yerel değerini temizler. Temizlenecek özellik tarafından DependencyPropertyKeybelirtilir.

(Devralındığı yer: DependencyObject)
Clone()

Bu nesnenin değerlerinin derin kopyalarını oluşturarak bu D3DImage nesnenin değiştirilebilir bir kopyasını oluşturur. Bağımlılık özelliklerini kopyalarken, bu yöntem kaynak başvurularını ve veri bağlamalarını (artık çözümlenmeyebilir) kopyalar, ancak animasyonları veya geçerli değerlerini kopyalamaz.

CloneCore(Freezable)

Temel (animasyonlu olmayan) özellik değerlerini kullanarak örneği belirtilen Freezable kopya (derin kopya) yapar.

CloneCurrentValue()

Bu nesnenin değiştirilebilir bir kopyasını oluşturur ve bu D3DImage nesnenin geçerli değerlerinin derin kopyalarını oluşturur. Kaynak başvuruları, veri bağlamaları ve animasyonlar kopyalanmaz, ancak geçerli değerleri kopyalanır.

CloneCurrentValueCore(Freezable)

Örneği, geçerli özellik değerlerini kullanarak belirtilenlerin Freezable değiştirilebilir bir kopyası (derin kopya) yapar.

CoerceValue(DependencyProperty)

Belirtilen bağımlılık özelliğinin değerini zorlama. Bu, çağrısında DependencyObjectvar olan bağımlılık özelliği için özellik meta verilerinde belirtilen herhangi bir CoerceValueCallback işlevi çağırarak gerçekleştirilir.

(Devralındığı yer: DependencyObject)
CopyBackBuffer()

öğesinin D3DImageyazılım kopyasını oluşturur.

CreateInstance()

Freezable sınıfının yeni bir örneğini başlatır.

(Devralındığı yer: Freezable)
CreateInstanceCore()

Türetilmiş bir sınıfta uygulandığında, türetilmiş sınıfın D3DImage yeni bir örneğini oluşturur.

Equals(Object)

Sağlanan DependencyObject öğesinin geçerli DependencyObjectile eşdeğer olup olmadığını belirler.

(Devralındığı yer: DependencyObject)
Finalize()

kaynakları serbest ve atık toplama tarafından geri kazanılmadan önce D3DImage diğer temizleme işlemlerini gerçekleştirir.

Freeze()

Geçerli nesneyi değiştirilemez hale getirir ve özelliğini olarak trueayarlarIsFrozen.

(Devralındığı yer: Freezable)
FreezeCore(Boolean)

D3DImage Değiştirilemez yapar veya değiştirilemez hale getirilip getirilemeyeceğini belirler.

GetAnimationBaseValue(DependencyProperty)

Belirtilen DependencyPropertyöğesinin animasyonsuz değerini döndürür.

(Devralındığı yer: Animatable)
GetAsFrozen()

temel (animasyonsuz) özellik değerlerini kullanarak öğesinin dondurulan Freezablebir kopyasını oluşturur. Kopya donduruldu olduğundan, dondurulan tüm alt nesneler başvuruyla kopyalanır.

(Devralındığı yer: Freezable)
GetAsFrozenCore(Freezable)

Temel (animasyonlu olmayan) özellik değerlerini kullanarak örneği belirtilen Freezable öğesinin dondurulan bir kopyası yapar.

GetCurrentValueAsFrozen()

Geçerli özellik değerlerini kullanarak öğesinin dondurulan Freezable bir kopyasını oluşturur. Kopya donduruldu olduğundan, dondurulan tüm alt nesneler başvuruyla kopyalanır.

(Devralındığı yer: Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Geçerli örneği, belirtilen Freezableöğesinin dondurulan bir kopyası yapar. Nesnenin animasyonlu bağımlılık özellikleri varsa, geçerli animasyonlu değerleri kopyalanır.

GetHashCode()

Bu DependencyObjectiçin bir karma kodu alır.

(Devralındığı yer: DependencyObject)
GetLocalValueEnumerator()

Hangi bağımlılık özelliklerinin bu DependencyObjectüzerinde yerel olarak ayarlı değerlere sahip olduğunu belirlemek için özelleştirilmiş bir numaralandırıcı oluşturur.

(Devralındığı yer: DependencyObject)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
GetValue(DependencyProperty)

Bir öğesinin bu örneğindeki bağımlılık özelliğinin DependencyObjectgeçerli geçerli değerini döndürür.

(Devralındığı yer: DependencyObject)
InvalidateProperty(DependencyProperty)

Belirtilen bağımlılık özelliği için geçerli değeri yeniden değerlendirir.

(Devralındığı yer: DependencyObject)
Lock()

öğesini kilitler D3DImage ve arka arabellekte işlemleri etkinleştirir.

MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnChanged()

Geçerli Freezable nesne değiştirildiğinde çağrılır.

(Devralındığı yer: Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Yeni ayarlanmış bir DependencyObjectType veri üyesi için uygun bağlam işaretçilerinin oluşturulmasını sağlar.

(Devralındığı yer: Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Bu üye Windows Presentation Foundation (WPF) altyapısını destekler ve doğrudan kodunuzdan kullanılması amaçlanmamıştır.

(Devralındığı yer: Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

türündeki DependencyObjectFreezabledeğişen bağımlılık özelliğine yanıt olarak herhangi Changed bir işleyici çağırmak için uygulamasını OnPropertyChanged(DependencyPropertyChangedEventArgs) geçersiz kılar.

(Devralındığı yer: Freezable)
ReadLocalValue(DependencyProperty)

Varsa, bağımlılık özelliğinin yerel değerini döndürür.

(Devralındığı yer: DependencyObject)
ReadPreamble()

Freezable geçerli bir iş parçacığından erişildiğinden emin olunmasını sağlar. öğesinin Freezable devralıcıları, bağımlılık özellikleri olmayan veri üyelerini okuyan herhangi bir API'nin başında bu yöntemi çağırmalıdır.

(Devralındığı yer: Freezable)
SetBackBuffer(D3DResourceType, IntPtr)

Arka arabelleğin kaynağı olarak bir Direct3D yüzeyi atar.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Arka arabelleğin kaynağı olarak bir Direct3D yüzeyi atar.

SetCurrentValue(DependencyProperty, Object)

Bir bağımlılık özelliğinin değerini, değer kaynağını değiştirmeden ayarlar.

(Devralındığı yer: DependencyObject)
SetValue(DependencyProperty, Object)

Bağımlılık özelliği tanımlayıcısı tarafından belirtilen bir bağımlılık özelliğinin yerel değerini ayarlar.

(Devralındığı yer: DependencyObject)
SetValue(DependencyPropertyKey, Object)

Bağımlılık özelliğinin tanımlayıcısı tarafından belirtilen salt okunur bağımlılık özelliğinin DependencyPropertyKey yerel değerini ayarlar.

(Devralındığı yer: DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Serileştirme işlemlerinin sağlanan bağımlılık özelliği için değeri serileştirmesi gerekip gerekmediğini belirten bir değer döndürür.

(Devralındığı yer: DependencyObject)
ToString()

Geçerli kültüre göre bu nesnenin dize gösterimini oluşturur.

(Devralındığı yer: ImageSource)
ToString(IFormatProvider)

Geçirilene göre bu nesnenin dize gösterimini IFormatProvider oluşturur. Sağlayıcı ise nullCurrentCulture kullanılır.

(Devralındığı yer: ImageSource)
TryLock(Duration)

ve öğesini kilitlemeyi D3DImage dener ve belirtilen süreyi bekler.

Unlock()

için kilit sayısını azaltma.D3DImage

VerifyAccess()

Çağıran iş parçacığının bu DispatcherObjecterişimine sahip olmasını zorlar.

(Devralındığı yer: DispatcherObject)
WritePostscript()

Changed için Freezable olayını oluşturur ve yöntemini çağırırOnChanged(). öğesinden Freezable türetilen sınıflar, bağımlılık özellikleri olarak depolanmayan sınıf üyelerini değiştiren herhangi bir API'nin sonunda bu yöntemi çağırmalıdır.

(Devralındığı yer: Freezable)
WritePreamble()

öğesinin Freezable dondurulmadığını ve geçerli bir iş parçacığı bağlamından erişildiğini doğrular. Freezable inheritor'lar bağımlılık özellikleri olmayan veri üyelerine yazan herhangi bir API'nin başında bu yöntemi çağırmalıdır.

(Devralındığı yer: Freezable)

Ekinlikler

Changed

içerdiği veya nesnesi değiştirildiğinde Freezable gerçekleşir.

(Devralındığı yer: Freezable)
IsFrontBufferAvailableChanged

Özellik değiştiğinde IsFrontBufferAvailable gerçekleşir.

Belirtik Arabirim Kullanımları

IFormattable.ToString(String, IFormatProvider)

Belirtilen biçimi kullanarak geçerli örneğin değerini biçimlendirin.

(Devralındığı yer: ImageSource)

Şunlara uygulanır