Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj efektu źródła mapy bitowej, aby wygenerować ID2D1Image z IWICBitmapSource do użycia jako dane wejściowe na wykresie efektowym. Ten efekt powoduje skalowanie i rotację procesora CPU. Można również opcjonalnie wygenerować mapę mipmap pamięci systemowej, która może być optymalizacją wydajności do aktywnego skalowania bardzo dużych obrazów w różnych ograniczonych rozdzielczościach.
Nuta
Efekt źródła mapy bitowej przyjmuje dane wejściowe jako właściwość, a nie jako dane wejściowe obrazu. Należy użyć metody SetValue, a nie metody SetInput. Właściwość WicBitmapSource służy do określania danych wejściowych obrazu.
Identyfikator CLSID dla tego efektu jest CLSID_D2D1BitmapSource.
- właściwości Efekt
- Tryby interpolacji
- orientacji
- tryby Alpha
- uwagi
- wymagania dotyczące
- Tematy pokrewne
Właściwości efektu
| Nazwa wyświetlana i wyliczenie indeksu | Opis |
|---|---|
| WicBitmapSource (źródło mapy) D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
IWICBitmapSource zawierające dane obrazu do załadowania. Typ to IWICBitmapSource. Wartość domyślna to NULL. |
| Skala D2D1_BITMAPSOURCE_PROP_SCALE |
Wielkość skali w kierunku X i Y. Efekt mnoży szerokość przez wartość X i wysokość przez wartość Y. Ta właściwość jest D2D1_VECTOR_2F zdefiniowana jako: (skala X, skala Y). Kwoty skalowania to FLOAT, bezjednostki i muszą być dodatnie lub 0. Typ jest D2D1_VECTOR_2F. Wartość domyślna to {1.0f, 1.0f}. |
| InterpolacjaMode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Tryb interpolacji używany do skalowania obrazu. Aby uzyskać więcej informacji, zobacz tryby interpolacji . Jeśli tryb wyłączy mipmap, BitmapSource będzie buforować obraz w rozdzielczości określonej przez właściwości Scale i EnableDPICorrection. Typ to D2D1_BITMAPSOURCE_INTERPOLATION_MODE. Wartość domyślna to D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
| Włącz DPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Jeśli ustawisz tę wartość na wartość TRUE, efekt spowoduje skalowanie obrazu wejściowego w celu przekonwertowania dpi zgłoszonego przez IWICBitmapSource do dpi kontekstu urządzenia. Efekt używa trybu interpolacji ustawionego za pomocą właściwości InterpolationMode. W przypadku ustawienia wartości FALSE efekt używa wartości DPI 96.0 dla obrazu wyjściowego. Typ to BOOL. Wartość domyślna to FALSE. |
| Tryb AlphaMode (Tryb Alfa) D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Tryb alfa danych wyjściowych. Może to być premultiplied lub proste. Aby uzyskać więcej informacji, zobacz tryby alfa. Typ jest D2D1_BITMAPSOURCE_ALPHA_MODE. Wartość domyślna to D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
| Orientacja D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Operacja przerzucania i/lub rotacji, która ma być wykonywana na obrazie. Aby uzyskać więcej informacji, zobacz Orientacja. Typ to D2D1_BITMAPSOURCE_ORIENTATION. Wartość domyślna to D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Tryby interpolacji
Efekt interpoluje przy użyciu tego trybu podczas skalowania obrazu lub poprawia dpi. Tryby interpolacji używane przez ten efekt są obliczane przez procesor CPU, a nie procesor GPU.
| Nazwa | Opis |
|---|---|
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Próbkuje najbliższy pojedynczy punkt i używa go. Nie generuje mapy mipmap. |
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Używa próbki czterech punktów i interpolacji liniowej. Nie generuje mapy mipmap. |
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Używa 16 przykładowego jądra sześciennego do interpolacji. Nie generuje mapy mipmap. |
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Używa interpolacji Fant WIC, tak samo jak interfejs IWICBitmapScaler. Nie generuje mapy mipmap. |
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Generuje łańcuch mipmap w pamięci systemowej przy użyciu interpolacji dwuliniowej. Dla każdego mipmap efekt skaluje się do najbliższej wielokrotności 0,5 przy użyciu interpolacji dwuliniowej, a następnie skaluje pozostałą ilość przy użyciu interpolacji liniowej. |
Orientacja
Właściwość Orientacja może służyć do stosowania flagi orientacji EXIF osadzonej na obrazie.
| Nazwa | Opis |
|---|---|
| D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Domyślny. Efekt nie zmienia orientacji danych wejściowych. |
| D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Przerzuca obraz w poziomie. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Obraca obraz zgodnie z ruchem wskazówek zegara 180 stopni. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Obraca obraz zgodnie z ruchem wskazówek zegara 180 stopni i odwraca go w poziomie. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Obraca obraz zgodnie z ruchem wskazówek zegara 270 stopni i odwraca go w poziomie. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Obraca obraz zgodnie z ruchem wskazówek zegara 90 stopni. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Obraca obraz zgodnie z ruchem wskazówek zegara 90 stopni i odwraca go w poziomie. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Obraca obraz zgodnie z ruchem wskazówek zegara 270 stopni. |
Ten fragment kodu pokazuje, jak przekonwertować wartości orientacji EXIF (zdefiniowane w pliku propkey.h) na wartości 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;
}
}
Tryby alfa
| Nazwa | Opis |
|---|---|
| D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | W danych wyjściowych efektu użyto premultiplied alfa. |
| D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | Dane wyjściowe efektu używają prostej alfa. |
Uwagi
Aby zoptymalizować wydajność w przypadku korzystania ze WIC i Direct2D, należy użyć IWICFormatConverter do konwersji na odpowiedni format pikseli oparty na scenariuszu aplikacji i natywnej precyzji obrazu.
W większości przypadków potok Direct2D aplikacji wymaga tylko 8 bitów na kanał (bpc) precyzji lub obraz zapewnia tylko 8 bpc precyzji, dlatego należy przekonwertować na GUID_WICPixelFormat32bppPBGRA. Jeśli jednak chcesz skorzystać z dodatkowej precyzji dostarczonej przez obraz (na przykład JPEG-XR lub TIFF przechowywany z większą niż 8 precyzją bpc), należy użyć formatu pikseli opartego na RGBA. Poniższa tabela zawiera więcej szczegółów.
| Żądana precyzja | Natywna precyzja obrazu | Zalecany format pikseli |
|---|---|---|
| 8 bitów na kanał | <= 8 bitów na kanał | GUID_WICPixelFormat32bppPBGRA |
| Jak najwięcej | <= 8 bitów na kanał | GUID_WICPixelFormat32bppPBGRA |
| Jak najwięcej | > 8 bitów na kanał | Kolejność kanałów RGBA, premultiplied alfa |
Ponieważ wiele formatów obrazów obsługuje wiele poziomów dokładności, należy użyć IWICBitmapSource::GetPixelFormat w celu uzyskania natywnego formatu pikseli obrazu, a następnie użyć IWICPixelFormatInfo określić, ile bitów na kanał dokładności jest dostępnych dla tego formatu. Należy również pamiętać, że nie wszystkie sprzęty obsługują formaty pikseli o wysokiej precyzji. W takich przypadkach aplikacja może wymagać powrotu do urządzenia WARP w celu zapewnienia wysokiej precyzji.
Wymagania
| Wymaganie | Wartość |
|---|---|
| Minimalny obsługiwany klient | Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows] |
| Minimalny obsługiwany serwer | Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows] |
| Nagłówek | d2d1efekty.h |
| Biblioteka | d2d1.lib, dxguid.lib |