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

  1. 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)
        );
    
  2. 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
       );
    
  3. 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.

  4. Créez le IWICBitmapFlipRotator à utiliser pour le retournement de l’image.

    // Create the flip/rotator.
    if (SUCCEEDED(hr))
    {
       hr = m_pIWICFactory->CreateBitmapFlipRotator(&pIFlipRotator);
    }
    
  5. 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.

  6. 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).

    Illustration montrant un retournement horizontal (le long de l’axe x de vérité) d’une image

Voir aussi

Guide de programmation

Référence

Exemples