Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird veranschaulicht, wie Eine IWICBitmapSource mithilfe einer IWICBitmapFlipRotator-Komponente gedreht wird.
So kippen und drehen Sie eine Bitmapquelle
Erstellen Sie ein IWICImagingFactory-Objekt , um WIC-Objekte (Windows Imaging Component) zu erstellen.
// Create WIC factory hr = CoCreateInstance( CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pIWICFactory) );
Verwenden Sie die CreateDecoderFromFilename-Methode , um einen IWICBitmapDecoder aus einer Bilddatei zu erstellen.
HRESULT hr = S_OK; IWICBitmapDecoder *pIDecoder = NULL; IWICBitmapFrameDecode *pIDecoderFrame = NULL; IWICBitmapFlipRotator *pIFlipRotator = NULL; hr = m_pIWICFactory->CreateDecoderFromFilename( L"turtle.jpg", // Image to be decoded NULL, // Do not prefer a particular vendor GENERIC_READ, // Desired read access to the file WICDecodeMetadataCacheOnDemand, // Cache metadata when needed &pIDecoder // Pointer to the decoder );
Rufen Sie den ersten IWICBitmapFrameDecode des Bilds ab.
// Retrieve the first bitmap frame. if (SUCCEEDED(hr)) { hr = pIDecoder->GetFrame(0, &pIDecoderFrame); }
Das JPEG-Dateiformat unterstützt nur einen einzelnen Frame. Da die Datei in diesem Beispiel eine JPEG-Datei ist, wird der erste Frame (
0
) verwendet. Informationen zu Bildformaten mit mehreren Frames finden Sie unter Abrufen der Frames eines Bilds für den Zugriff auf jeden Frame des Bilds.Erstellen Sie den IWICBitmapFlipRotator , der zum Spiegeln des Bilds verwendet werden soll.
// Create the flip/rotator. if (SUCCEEDED(hr)) { hr = m_pIWICFactory->CreateBitmapFlipRotator(&pIFlipRotator); }
Initialisieren Sie das Flip-/Rotatorobjekt mit den Bilddaten des Bitmaprahmens, der horizontal (entlang der vertikalen y-Achse) gekippt wird.
// Initialize the flip/rotator to flip the original source horizontally. if (SUCCEEDED(hr)) { hr = pIFlipRotator->Initialize( pIDecoderFrame, // Bitmap source to flip. WICBitmapTransformFlipHorizontal); // Flip the pixels along the // vertical y-axis. }
Weitere Drehungen und Flippingoptionen finden Sie unter WICBitmapTransformOptions .
Zeichnen oder verarbeiten Sie die gedrehte Bitmapquelle.
Hinweis
Die IWICBitmapFlipRotator-Schnittstelle erbt von der IWICBitmapSource-Schnittstelle , sodass Sie das initialisierte Flip-/Rotatorobjekt überall verwenden können, wo eine IWICBitmapSource akzeptiert wird.
Die folgende Abbildung veranschaulicht das horizontale Kippen einer Abbildung (entlang der vertikalen x-Achse).
Weitere Informationen