Metodo IWICBitmap::Lock (wincodec.h)
Fornisce l'accesso a un'area rettangolare della bitmap.
Sintassi
HRESULT Lock(
[in] const WICRect *prcLock,
[in] DWORD flags,
[out] IWICBitmapLock **ppILock
);
Parametri
[in] prcLock
Tipo: const WICRect*
Rettangolo a cui accedere.
[in] flags
Tipo: DWORD
Modalità di accesso che si desidera ottenere per il blocco. Si tratta di una combinazione bit per bit di WICBitmapLockFlags per l'accesso in lettura, scrittura o lettura e scrittura.
Valore | Significato |
---|---|
|
Blocco di accesso in lettura. |
|
Blocco di accesso in scrittura. |
[out] ppILock
Tipo: IWICBitmapLock**
Puntatore che riceve la posizione di memoria bloccata.
Valore restituito
Tipo: HRESULT
Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
I blocchi sono esclusivi per la scrittura, ma possono essere condivisi per la lettura. Non è possibile chiamare CopyPixels mentre IWICBitmap è bloccato per la scrittura. In questo modo verrà restituito un errore, poiché i blocchi sono esclusivi.
Esempio
Nell'esempio seguente viene creata una mappa IWICBitmap e i dati dell'immagine vengono cancellati usando un IWICBitmapLock.
IWICImagingFactory *pFactory = NULL;
IWICBitmap *pBitmap = NULL;
UINT uiWidth = 640;
UINT uiHeight = 480;
WICPixelFormatGUID formatGUID = GUID_WICPixelFormat32bppBGRA;
WICRect rcLock = { 0, 0, uiWidth, uiHeight };
IWICBitmapLock *pLock = NULL;
HRESULT hr = CoCreateInstance(
CLSID_WICImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IWICImagingFactory,
(LPVOID*)&pFactory
);
if (SUCCEEDED(hr))
{
hr = pFactory->CreateBitmap(uiWidth, uiHeight, formatGUID, WICBitmapCacheOnDemand, &pBitmap);
}
if (SUCCEEDED(hr))
{
hr = pBitmap->Lock(&rcLock, WICBitmapLockWrite, &pLock);
if (SUCCEEDED(hr))
{
UINT cbBufferSize = 0;
UINT cbStride = 0;
BYTE *pv = NULL;
hr = pLock->GetStride(&cbStride);
if (SUCCEEDED(hr))
{
hr = pLock->GetDataPointer(&cbBufferSize, &pv);
}
// Clear the image data
ZeroMemory(pv, cbBufferSize);
// Release the bitmap lock.
pLock->Release();
}
}
if (pBitmap)
{
pBitmap->Release();
}
if (pFactory)
{
pFactory->Release();
}
return hr;
Requisiti
Client minimo supportato | Windows XP con SP2, Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | wincodec.h |
Libreria | Windowscodecs.lib |
DLL | Windowscodecs.dll |