Partager via


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

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

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

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

    illustration montrant un retournement horizontal (le long de l’axe des x) d’une image

Voir aussi

Guide de programmation

Référence

Exemples