Kippen und Drehen einer Bitmapquelle
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