Efek sumber bitmap

Gunakan efek sumber bitmap untuk menghasilkan ID2D1Image dari IWICBitmapSource untuk digunakan sebagai input dalam grafik efek. Efek ini melakukan penskalaan dan rotasi pada CPU. Ini juga dapat secara opsional menghasilkan mipmap memori sistem, yang dapat menjadi pengoptimalan performa untuk secara aktif menskalakan gambar yang sangat besar pada berbagai resolusi yang dikurangi.

Catatan

Efek sumber bitmap mengambil inputnya sebagai properti , bukan sebagai input gambar. Anda harus menggunakan metode SetValue , bukan metode SetInput . Properti WicBitmapSource adalah tempat Anda menentukan data input gambar.

CLSID untuk efek ini CLSID_D2D1BitmapSource.

Properti efek

Nama tampilan dan enumerasi indeks Deskripsi
WicBitmapSource
D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE
IWICBitmapSource yang berisi data gambar yang akan dimuat.
Jenisnya adalah IWICBitmapSource.
Nilai defaultnya adalah NULL.
Skala
D2D1_BITMAPSOURCE_PROP_SCALE
Jumlah skala dalam arah X dan Y. Efek mengalikan lebar dengan nilai X dan tinggi dengan nilai Y. Properti ini adalah D2D1_VECTOR_2F yang didefinisikan sebagai: (skala X, skala Y). Jumlah skalanya adalah FLOAT, tanpa unit, dan harus positif atau 0.
Jenisnya D2D1_VECTOR_2F.
Nilai defaultnya adalah {1.0f, 1.0f}.
InterpolationMode.
D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE
Mode interpolasi yang digunakan untuk menskalakan gambar. Lihat Mode interpolasi untuk informasi selengkapnya.
Jika mode menonaktifkan mipmap, maka BitmapSouce akan menyimpan gambar pada resolusi yang ditentukan oleh properti Skala dan EnableDPICorrection.
Jenisnya D2D1_BITMAPSOURCE_INTERPOLATION_MODE.
Nilai defaultnya adalah D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR.
EnableDPICorrection
D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION
Jika Anda mengatur ini ke TRUE, efeknya akan menskalakan gambar input untuk mengonversi DPI yang dilaporkan oleh IWICBitmapSource ke DPI konteks perangkat. Efeknya menggunakan mode interpolasi yang Anda tetapkan dengan properti InterpolationMode. Jika Anda mengatur ini ke FALSE, efeknya menggunakan DPI 96,0 untuk gambar output.
Jenisnya adalah BOOL.
Nilai defaultnya adalah FALSE.
AlphaMode
D2D1_BITMAPSOURCE_PROP_ALPHA_MODE
Mode alfa output. Ini bisa berupa premultiplied atau lurus. Lihat Mode alfa untuk informasi selengkapnya.
Jenisnya D2D1_BITMAPSOURCE_ALPHA_MODE.
Nilai defaultnya adalah D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED.
Orientasi
D2D1_BITMAPSOURCE_PROP_ORIENTATION
Operasi balik dan/atau rotasi yang akan dilakukan pada gambar. Lihat Orientasi untuk informasi selengkapnya.
Jenisnya D2D1_BITMAPSOURCE_ORIENTATION.
Nilai defaultnya adalah D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT.

Mode interpolasi

Efek menginterpolasi menggunakan mode ini saat menskalakan gambar atau ketika memperbaiki DPI. Mode interpolasi yang digunakan efek ini dihitung oleh CPU, bukan GPU.

Nama Deskripsi
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR Sampel titik tunggal terdekat dan menggunakannya. Tidak menghasilkan mipmap.
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR Menggunakan sampel empat titik dan interpolasi linier. Tidak menghasilkan mipmap.
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC Menggunakan 16 sampel kernel kubik untuk interpolasi. Tidak menghasilkan mipmap.
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT Menggunakan interpolasi fant WIC, sama dengan antarmuka IWICBitmapScaler . Tidak menghasilkan mipmap.
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR Menghasilkan rantai mipmap dalam memori sistem menggunakan interpolasi bilinear. Untuk setiap mipmap efek menskalakan ke kelipatan terdekat 0,5 menggunakan interpolasi bilinear dan kemudian menskalakan jumlah yang tersisa menggunakan interpolasi linier.

Orientasi

Properti Orientasi dapat digunakan untuk menerapkan bendera orientasi EXIF yang disematkan dalam gambar.

Nama Deskripsi
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT Default. Efeknya tidak mengubah orientasi input.
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL Membalik gambar secara horizontal.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 Memutar gambar searah jajar 180 derajat.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL Memutar gambar searah jarang 180 derajat dan membaliknya secara horizontal.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL Memutar gambar searah jarang 270 derajat dan membaliknya secara horizontal.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 Memutar gambar searah jajar 90 derajat.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL Memutar gambar searah jarang 90 derajat dan membaliknya secara horizontal.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 Memutar gambar searah jaga 270 derajat.

Cuplikan kode ini menunjukkan cara mengonversi dari nilai orientasi EXIF (didefinisikan dalam propkey.h) menjadi nilai D2D1_BITMAPSOURCE_ORIENTATION.

#include <propkey.h>
#include <d2d1effects.h>

D2D1_BITMAPSOURCE_ORIENTATION GetBitmapSourceOrientation(unsigned short PhotoOrientation)
{
       switch (PhotoOrientation)
       {
       case PHOTO_ORIENTATION_NORMAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
       case PHOTO_ORIENTATION_FLIPHORIZONTAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE180:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180;
       case PHOTO_ORIENTATION_FLIPVERTICAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_TRANSPOSE: 
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE270:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90;
       case PHOTO_ORIENTATION_TRANSVERSE:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE90:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270;
       default:
              return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
       }
}

Mode alfa

Nama Deskripsi
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED Output efek menggunakan alfa yang telah ditentukan sebelumnya.
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT Output efek menggunakan alfa lurus.

Keterangan

Untuk mengoptimalkan performa saat menggunakan WIC dan Direct2D bersama-sama, Anda harus menggunakan IWICFormatConverter untuk mengonversi ke format piksel yang sesuai berdasarkan skenario aplikasi Anda dan presisi asli gambar.

Dalam kebanyakan kasus, alur Direct2D aplikasi Anda hanya memerlukan 8 bit per saluran (bpc) presisi, atau gambar hanya menyediakan presisi 8 bpc, dan oleh karena itu Anda harus mengonversi ke GUID_WICPixelFormat32bppPBGRA. Namun, jika Anda ingin memanfaatkan presisi ekstra yang disediakan oleh gambar (misalnya, JPEG-XR atau TIFF yang disimpan dengan presisi lebih dari 8 bpc), Anda harus menggunakan format piksel berbasis RGBA. Tabel di bawah ini menyediakan detail selengkapnya.

Presisi yang diinginkan Presisi asli gambar Format piksel yang direkomendasikan
8 bit per saluran <= 8 bit per saluran GUID_WICPixelFormat32bppPBGRA
Setinggka mungkin <= 8 bit per saluran GUID_WICPixelFormat32bppPBGRA
Setinggka mungkin > 8 bit per saluran Urutan saluran RGBA, alfa yang telah diisi sebelumnya

Karena banyak format gambar mendukung beberapa tingkat presisi, Anda harus menggunakan IWICBitmapSource::GetPixelFormat untuk mendapatkan format piksel asli gambar, lalu menggunakan IWICPixelFormatInfo untuk menentukan berapa banyak bit per saluran presisi yang tersedia untuk format tersebut. Selain itu, perhatikan bahwa tidak semua perangkat keras mendukung format piksel presisi tinggi. Dalam kasus tersebut, aplikasi Anda mungkin perlu kembali ke perangkat WARP untuk mendukung presisi tinggi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows]
Server minimum yang didukung Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows]
Header d2d1effects.h
Pustaka d2d1.lib, dxguid.lib

ID2D1Effect