Método IWICBitmap::Lock (wincodec.h)
Proporciona acceso a un área rectangular del mapa de bits.
Sintaxis
HRESULT Lock(
[in] const WICRect *prcLock,
[in] DWORD flags,
[out] IWICBitmapLock **ppILock
);
Parámetros
[in] prcLock
Tipo: const WICRect*
Rectángulo al que se va a acceder.
[in] flags
Tipo: DWORD
Modo de acceso que desea obtener para el bloqueo. Se trata de una combinación bit a bit de WICBitmapLockFlags para acceso de lectura, escritura o lectura y escritura.
Value | Significado |
---|---|
|
Bloqueo de acceso de lectura. |
|
Bloqueo de acceso de escritura. |
[out] ppILock
Tipo: IWICBitmapLock**
Puntero que recibe la ubicación de memoria bloqueada.
Valor devuelto
Tipo: HRESULT
Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Los bloqueos son exclusivos de escritura, pero se pueden compartir para leer. No se puede llamar a CopyPixels mientras IWICBitmap está bloqueado para escribir. Si lo hace, se devolverá un error, ya que los bloqueos son exclusivos.
Ejemplos
En el ejemplo siguiente, se crea un IWICBitmap y los datos de imagen se borran mediante 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;
Requisitos
Cliente mínimo compatible | Windows XP con SP2, Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | wincodec.h |
Library | Windowscodecs.lib |
Archivo DLL | Windowscodecs.dll |