Comment retourner et faire pivoter une source bitmap
Cette rubrique montre comment faire pivoter un IWICBitmapSource à l’aide d’un composant IWICBitmapFlipRotator .
Pour retourner et faire pivoter une source bitmap
créez un objet IWICImagingFactory pour créer des objets WIC (Windows Imaging Component).
// Create WIC factory hr = CoCreateInstance( CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pIWICFactory) );Utilisez la méthode CreateDecoderFromFilename pour créer une IWICBitmapDecoder à partir d’un fichier image.
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 );Obtient le premier IWICBitmapFrameDecode de l’image.
// Retrieve the first bitmap frame. if (SUCCEEDED(hr)) { hr = pIDecoder->GetFrame(0, &pIDecoderFrame); }Le format de fichier JPEG ne prend en charge qu’une seule trame. Étant donné que le fichier de cet exemple est un fichier JPEG, le premier frame (
0) est utilisé. Pour les formats d’image qui ont plusieurs frames, consultez Comment récupérer les frames d’une image pour accéder à chaque image de l’image.Créez le IWICBitmapFlipRotator à utiliser pour le retournement de l’image.
// Create the flip/rotator. if (SUCCEEDED(hr)) { hr = m_pIWICFactory->CreateBitmapFlipRotator(&pIFlipRotator); }Initialise l’objet Flip/Rotate avec les données image du frame bitmap retourné horizontalement (le long de l’axe vertical y).
// 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. }Consultez WICBitmapTransformOptions pour obtenir des rotations et des options de retournement supplémentaires.
Dessinez ou traitez la source bitmap retournée.
Notes
L’interface IWICBitmapFlipRotator hérite de l’interface IWICBitmapSource . vous pouvez donc utiliser l’objet Flip/Rotate initialisé n’importe où qui accepte un IWICBitmapSource.
L’illustration suivante montre le basculement d’une image horizontale (le long de l’axe vertical x).
