Een bitmapbron knippen
In dit onderwerp ziet u hoe u een rechthoekig gedeelte van een IWICBitmapSource kunt verkrijgen met behulp van een IWICBitmapClipper-onderdeel.
Een bitmapbron knippen
Maak een IWICImagingFactory-object om WIC-objecten (Windows Imaging Component) te maken.
// Create WIC factory hr = CoCreateInstance( CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pIWICFactory) );
Gebruik de methode CreateDecoderFromFilename om een IWICBitmapDecoder- te maken op basis van een afbeeldingsbestand.
HRESULT hr = S_OK; IWICBitmapDecoder *pIDecoder = NULL; IWICBitmapFrameDecode *pIDecoderFrame = 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 );
Haal de eerste IWICBitmapFrameDecode van de afbeelding op.
// Retrieve the first bitmap frame. if (SUCCEEDED(hr)) { hr = pIDecoder->GetFrame(0, &pIDecoderFrame); }
De JPEG-bestandsindeling ondersteunt slechts één frame. Omdat het bestand in dit voorbeeld een JPEG-bestand is, wordt het eerste frame (
0
) gebruikt. Zie voor afbeeldingsindelingen met meerdere frames Het ophalen van de frames van een afbeelding voor toegang tot elk frame van de afbeelding.Maak de IWICBitmapClipper aan voor het uitsnijden van de afbeelding.
IWICBitmapClipper *pIClipper = NULL; if (SUCCEEDED(hr)) { hr = m_pIWICFactory->CreateBitmapClipper(&pIClipper); }
Initialiseer het clipperobject met de afbeeldingsgegevens in de opgegeven rechthoek van het bitmapframe.
// Create the clipping rectangle. WICRect rcClip = { 0, 0, uiWidth/2, uiHeight/2 }; // Initialize the clipper with the given rectangle of the frame's image data. if (SUCCEEDED(hr)) { hr = pIClipper->Initialize(pIDecoderFrame, &rcClip); }
Teken of verwerk de geknipte afbeelding.
In de volgende afbeelding ziet u afbeeldingsopname. De oorspronkelijke afbeelding aan de linkerkant is 200 x 130 pixels. De afbeelding aan de rechterkant is de oorspronkelijke afbeelding die is geknipt naar een rechthoek die is gedefinieerd als
{20,20,100,100}
.
Zie ook