Bagikan melalui


D3DImage Kelas

Definisi

Yang ImageSource menampilkan permukaan Direct3D yang dibuat pengguna.

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
Warisan

Contoh

Contoh kode berikut menunjukkan cara mendeklarasikan D3DImage di XAML. Anda harus memetakan System.Windows.Interop namespace layanan, karena tidak disertakan dalam namespace XAML default. Untuk informasi selengkapnya, lihat Panduan: Hosting Konten Direct3D9 di 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>

Keterangan

D3DImage Gunakan kelas untuk menghosting konten Direct3D dalam aplikasi Windows Presentation Foundation (WPF).

Lock Panggil metode untuk mengubah konten Direct3D yang ditampilkan oleh D3DImage. SetBackBuffer Panggil metode untuk menetapkan permukaan Direct3D ke D3DImage. AddDirtyRect Panggil metode untuk melacak pembaruan ke permukaan Direct3D. Unlock Panggil metode untuk menampilkan area yang diubah.

Kelas D3DImage ini mengelola dua buffer tampilan, yang disebut buffer belakang dan buffer depan. Buffer belakang adalah permukaan Direct3D Anda. Perubahan pada buffer belakang disalin ke buffer depan saat Anda memanggil Unlock metode , di mana ia ditampilkan pada perangkat keras. Terkadang, buffer depan menjadi tidak tersedia. Kurangnya ketersediaan ini dapat disebabkan oleh penguncian layar, aplikasi Direct3D eksklusif layar penuh, peralihan pengguna, atau aktivitas sistem lainnya. Ketika ini terjadi, aplikasi WPF Anda diberi tahu dengan menangani peristiwa tersebut IsFrontBufferAvailableChanged . Bagaimana aplikasi Anda merespons buffer depan menjadi tidak tersedia tergantung pada apakah WPF diaktifkan untuk kembali ke penyajian perangkat lunak. Metode SetBackBuffer ini memiliki kelebihan beban yang mengambil parameter yang menentukan apakah WPF kembali ke penyajian perangkat lunak.

Menanggapi Penyangga Depan Yang Tidak Tersedia ketika WPF Tidak Kembali ke Penyajian Perangkat Lunak

Ketika Anda memanggil SetBackBuffer(D3DResourceType, IntPtr) kelebihan beban atau memanggil SetBackBuffer(D3DResourceType, IntPtr, Boolean) kelebihan beban dengan parameter yang enableSoftwareFallback diatur ke false, sistem penyajian merilis referensinya ke buffer belakang ketika buffer depan menjadi tidak tersedia dan tidak ada yang ditampilkan. Ketika buffer depan tersedia lagi, sistem penyajian IsFrontBufferAvailableChanged meningkatkan peristiwa untuk memberi tahu aplikasi WPF Anda. Anda dapat membuat penanganan aktivitas agar IsFrontBufferAvailableChanged peristiwa dapat memulai ulang penyajian lagi dengan permukaan Direct3D yang valid. Untuk memulai ulang penyajian, Anda harus memanggil SetBackBuffer.

Menanggapi Buffer Depan yang Tidak Tersedia saat WPF Kembali ke Rendering Perangkat Lunak

Ketika Anda memanggil SetBackBuffer(D3DResourceType, IntPtr, Boolean) kelebihan beban dengan enableSoftwareFallback parameter yang diatur ke true, sistem penyajian mempertahankan referensinya ke buffer belakang ketika buffer depan menjadi tidak tersedia, sehingga tidak perlu memanggil SetBackBuffer ketika buffer depan tersedia lagi. Mungkin ada situasi di mana perangkat pengguna menjadi tidak tersedia. Ketika itu terjadi, panggil SetBackBuffer untuk merilis referensi WPF ke buffer belakang. Jika Anda perlu mengatur ulang perangkat, panggil SetBackBuffer dengan parameter yang backBuffer diatur ke null, lalu panggil SetBackBuffer lagi dengan backBuffer diatur ke permukaan Direct3D yang valid.

Catatan

Performa sangat tergantung pada pengaturan permukaan Direct3D. Untuk informasi selengkapnya, lihat Pertimbangan Performa untuk Interoperabilitas Direct3D9 dan WPF.

Catatan

Kelas D3DImage tidak menampilkan konten Direct3D ketika WPF merender dalam perangkat lunak, seperti melalui koneksi Desktop Jauh, kecuali Anda memanggil SetBackBuffer(D3DResourceType, IntPtr, Boolean) dan menentukan true untuk enableSoftwareFallback parameter .

Konstruktor

D3DImage()

Menginisialisasi instans baru kelas D3DImage.

D3DImage(Double, Double)

Menginisialisasi instans D3DImage baru kelas dengan resolusi tampilan yang ditentukan.

Bidang

IsFrontBufferAvailableProperty

IsFrontBufferAvailable Mengidentifikasi properti dependensi.

Properti

CanFreeze

Mendapatkan nilai yang menunjukkan apakah objek dapat dibuat tidak dapat dimodifikasi.

(Diperoleh dari Freezable)
DependencyObjectType

Mendapatkan yang membungkus jenis CLR dari instans DependencyObjectType ini.

(Diperoleh dari DependencyObject)
Dispatcher

Dispatcher Mendapatkan ini DispatcherObject dikaitkan dengan.

(Diperoleh dari DispatcherObject)
HasAnimatedProperties

Mendapatkan nilai yang menunjukkan apakah satu atau beberapa AnimationClock objek dikaitkan dengan salah satu properti dependensi objek ini.

(Diperoleh dari Animatable)
Height

Mendapatkan tinggi D3DImage.

IsFrontBufferAvailable

Mendapatkan nilai yang menunjukkan apakah ada buffer depan.

IsFrozen

Mendapatkan nilai yang menunjukkan apakah objek saat ini dapat dimodifikasi.

(Diperoleh dari Freezable)
IsSealed

Mendapatkan nilai yang menunjukkan apakah instans ini saat ini disegel (baca-saja).

(Diperoleh dari DependencyObject)
Metadata

Mendapatkan metadata yang terkait dengan sumber gambar.

PixelHeight

Mendapatkan tinggi D3DImage, dalam piksel.

PixelWidth

Mendapatkan lebar D3DImage, dalam piksel.

Width

Mendapatkan lebar .D3DImage

Metode

AddDirtyRect(Int32Rect)

Menentukan area buffer belakang yang berubah.

ApplyAnimationClock(DependencyProperty, AnimationClock)

AnimationClock Menerapkan ke yang ditentukanDependencyProperty. Jika properti sudah dianimasikan, SnapshotAndReplace perilaku handoff digunakan.

(Diperoleh dari Animatable)
ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

AnimationClock Menerapkan ke yang ditentukanDependencyProperty. Jika properti sudah dianimasikan, yang ditentukan HandoffBehavior akan digunakan.

(Diperoleh dari Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline)

Menerapkan animasi ke yang ditentukan DependencyProperty. Animasi dimulai ketika bingkai berikutnya dirender. Jika properti yang ditentukan sudah dianimasikan, SnapshotAndReplace perilaku handoff digunakan.

(Diperoleh dari Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Menerapkan animasi ke yang ditentukan DependencyProperty. Animasi dimulai ketika bingkai berikutnya dirender. Jika properti yang ditentukan sudah dianimasikan, properti yang ditentukan HandoffBehavior akan digunakan.

(Diperoleh dari Animatable)
CheckAccess()

Menentukan apakah utas panggilan memiliki akses ke ini DispatcherObject.

(Diperoleh dari DispatcherObject)
ClearValue(DependencyProperty)

Menghapus nilai lokal properti. Properti yang akan dibersihkan ditentukan oleh DependencyProperty pengidentifikasi.

(Diperoleh dari DependencyObject)
ClearValue(DependencyPropertyKey)

Menghapus nilai lokal properti baca-saja. Properti yang akan dibersihkan ditentukan oleh DependencyPropertyKey.

(Diperoleh dari DependencyObject)
Clone()

Membuat klon yang dapat dimodifikasi dari objek ini D3DImage , membuat salinan mendalam dari nilai objek ini. Saat menyalin properti dependensi, metode ini menyalin referensi sumber daya dan pengikatan data (yang mungkin tidak lagi diselesaikan), tetapi bukan animasi atau nilainya saat ini.

CloneCore(Freezable)

Menjadikan instans sebagai kloning (salinan mendalam) dari yang ditentukan Freezable menggunakan nilai properti dasar (non-animasi).

CloneCurrentValue()

Membuat klon yang dapat dimodifikasi dari objek ini D3DImage , membuat salinan mendalam dari nilai objek ini saat ini. Referensi sumber daya, pengikatan data, dan animasi tidak disalin, tetapi nilainya saat ini disalin.

CloneCurrentValueCore(Freezable)

Menjadikan instans sebagai klon yang dapat dimodifikasi (salinan mendalam) dari yang ditentukan Freezable menggunakan nilai properti saat ini.

CoerceValue(DependencyProperty)

Memaksakan nilai properti dependensi yang ditentukan. Ini dicapai dengan memanggil fungsi apa pun CoerceValueCallback yang ditentukan dalam metadata properti untuk properti dependensi seperti yang ada pada panggilan DependencyObject.

(Diperoleh dari DependencyObject)
CopyBackBuffer()

Membuat salinan perangkat lunak dari D3DImage.

CreateInstance()

Menginisialisasi instans baru kelas Freezable.

(Diperoleh dari Freezable)
CreateInstanceCore()

Saat diimplementasikan di kelas turunan, membuat instans baru dari kelas turunan D3DImage .

Equals(Object)

Menentukan apakah yang disediakan DependencyObject setara dengan saat ini DependencyObject.

(Diperoleh dari DependencyObject)
Finalize()

Membebaskan sumber daya dan melakukan operasi pembersihan lainnya sebelum D3DImage direklamasi oleh pengumpulan sampah.

Freeze()

Membuat objek saat ini tidak dapat dimodifikasi dan mengatur propertinya IsFrozen ke true.

(Diperoleh dari Freezable)
FreezeCore(Boolean)

D3DImage Membuat tidak dapat dimodifikasi atau menentukan apakah dapat dibuat tidak dapat dimodifikasi.

GetAnimationBaseValue(DependencyProperty)

Mengembalikan nilai non-animasi dari yang ditentukan DependencyProperty.

(Diperoleh dari Animatable)
GetAsFrozen()

Membuat salinan beku dari Freezable, menggunakan nilai properti dasar (non-animasi). Karena salinan dibekukan, sub-objek beku apa pun disalin oleh referensi.

(Diperoleh dari Freezable)
GetAsFrozenCore(Freezable)

Menjadikan instans sebagai klon beku dari yang ditentukan Freezable menggunakan nilai properti dasar (non-animasi).

GetCurrentValueAsFrozen()

Membuat salinan beku dari Freezable menggunakan nilai properti saat ini. Karena salinan dibekukan, sub-objek beku apa pun disalin oleh referensi.

(Diperoleh dari Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Menjadikan instans saat ini sebagai klon beku dari yang ditentukan Freezable. Jika objek memiliki properti dependensi animasi, nilai animasinya saat ini akan disalin.

GetHashCode()

Mendapatkan kode hash untuk ini DependencyObject.

(Diperoleh dari DependencyObject)
GetLocalValueEnumerator()

Membuat enumerator khusus untuk menentukan properti dependensi mana yang memiliki nilai yang ditetapkan secara lokal pada ini DependencyObject.

(Diperoleh dari DependencyObject)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
GetValue(DependencyProperty)

Mengembalikan nilai efektif properti dependensi saat ini pada instans ini dari DependencyObject.

(Diperoleh dari DependencyObject)
InvalidateProperty(DependencyProperty)

Mengevaluasi kembali nilai efektif untuk properti dependensi yang ditentukan.

(Diperoleh dari DependencyObject)
Lock()

D3DImage Mengunci dan mengaktifkan operasi pada buffer belakang.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
OnChanged()

Dipanggil ketika objek saat ini Freezable dimodifikasi.

(Diperoleh dari Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Memastikan bahwa penunjuk konteks yang sesuai ditetapkan untuk DependencyObjectType anggota data yang baru saja ditetapkan.

(Diperoleh dari Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Anggota ini mendukung infrastruktur Windows Presentation Foundation (WPF) dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

(Diperoleh dari Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Mengambil alih DependencyObject implementasi OnPropertyChanged(DependencyPropertyChangedEventArgs) untuk juga memanggil penangan apa pun Changed sebagai respons terhadap properti dependensi yang berubah dari jenis Freezable.

(Diperoleh dari Freezable)
ReadLocalValue(DependencyProperty)

Mengembalikan nilai lokal properti dependensi, jika ada.

(Diperoleh dari DependencyObject)
ReadPreamble()

Memastikan bahwa Freezable sedang diakses dari utas yang valid. Pewaris Freezable harus memanggil metode ini di awal API apa pun yang membaca anggota data yang bukan properti dependensi.

(Diperoleh dari Freezable)
SetBackBuffer(D3DResourceType, IntPtr)

Menetapkan permukaan Direct3D sebagai sumber buffer belakang.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Menetapkan permukaan Direct3D sebagai sumber buffer belakang.

SetCurrentValue(DependencyProperty, Object)

Mengatur nilai properti dependensi tanpa mengubah sumber nilainya.

(Diperoleh dari DependencyObject)
SetValue(DependencyProperty, Object)

Mengatur nilai lokal properti dependensi, yang ditentukan oleh pengidentifikasi properti dependensinya.

(Diperoleh dari DependencyObject)
SetValue(DependencyPropertyKey, Object)

Mengatur nilai lokal properti dependensi baca-saja, yang ditentukan oleh DependencyPropertyKey pengidentifikasi properti dependensi.

(Diperoleh dari DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Mengembalikan nilai yang menunjukkan apakah proses serialisasi harus menserialisasikan nilai untuk properti dependensi yang disediakan.

(Diperoleh dari DependencyObject)
ToString()

Membuat representasi string objek ini berdasarkan budaya saat ini.

(Diperoleh dari ImageSource)
ToString(IFormatProvider)

Membuat representasi string objek ini berdasarkan yang IFormatProvider diteruskan. Jika penyedia adalah null, CurrentCulture digunakan.

(Diperoleh dari ImageSource)
TryLock(Duration)

Mencoba mengunci D3DImage dan menunggu durasi yang ditentukan.

Unlock()

Mengurangi jumlah kunci untuk D3DImage.

VerifyAccess()

Memberlakukan bahwa utas panggilan memiliki akses ke ini DispatcherObject.

(Diperoleh dari DispatcherObject)
WritePostscript()

Menaikkan Changed peristiwa untuk Freezable dan memanggil metodenya OnChanged() . Kelas yang berasal dari Freezable harus memanggil metode ini di akhir API apa pun yang memodifikasi anggota kelas yang tidak disimpan sebagai properti dependensi.

(Diperoleh dari Freezable)
WritePreamble()

Memverifikasi bahwa Freezable tidak dibekukan dan sedang diakses dari konteks utas yang valid. Freezable pewaris harus memanggil metode ini di awal API apa pun yang menulis ke anggota data yang bukan properti dependensi.

(Diperoleh dari Freezable)

Acara

Changed

Terjadi ketika Freezable atau objek yang dikandungnya dimodifikasi.

(Diperoleh dari Freezable)
IsFrontBufferAvailableChanged

Terjadi ketika IsFrontBufferAvailable properti berubah.

Implementasi Antarmuka Eksplisit

IFormattable.ToString(String, IFormatProvider)

Memformat nilai instans saat ini menggunakan format yang ditentukan.

(Diperoleh dari ImageSource)

Berlaku untuk