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 un 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 );
Obtenez 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 image. Étant donné que le fichier de cet exemple est un fichier JPEG, la première image (
0
) est utilisée. Pour connaître les formats d’image qui ont plusieurs images, consultez Comment récupérer les images d’une image pour accéder à chaque image de l’image.Créez le IWICBitmapFlipRotator à utiliser pour retourner l’image.
// Create the flip/rotator. if (SUCCEEDED(hr)) { hr = m_pIWICFactory->CreateBitmapFlipRotator(&pIFlipRotator); }
Initialisez l’objet flip/rotateur avec les données d’image du cadre bitmap retournés horizontalement (le long de l’axe y vertical).
// 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. }
Pour plus d’informations sur les rotations et options de basculement, consultez WICBitmapTransformOptions .
Dessinez ou traitez la source bitmap inversée.
Notes
L’interface IWICBitmapFlipRotator hérite de l’interface IWICBitmapSource, de sorte que vous pouvez utiliser l’objet flip/rotateur initialisé n’importe où qui accepte un IWICBitmapSource.
L’illustration suivante montre le basculement d’une image horizontalement (le long de l’axe des x verticaux).
Voir aussi