Método IWICBitmap::Lock (wincodec.h)
Fornece acesso a uma área retangular do bitmap.
Sintaxe
HRESULT Lock(
[in] const WICRect *prcLock,
[in] DWORD flags,
[out] IWICBitmapLock **ppILock
);
Parâmetros
[in] prcLock
Tipo: const WICRect*
O retângulo a ser acessado.
[in] flags
Tipo: DWORD
O modo de acesso que você deseja obter para o bloqueio. Essa é uma combinação bit a bit de WICBitmapLockFlags para acesso de leitura, gravação ou leitura e gravação.
Valor | Significado |
---|---|
|
O bloqueio de acesso de leitura. |
|
O bloqueio de acesso de gravação. |
[out] ppILock
Tipo: IWICBitmapLock**
Um ponteiro que recebe o local de memória bloqueada.
Valor retornado
Tipo: HRESULT
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Os bloqueios são exclusivos para escrita, mas podem ser compartilhados para leitura. Não é possível chamar CopyPixels enquanto o IWICBitmap estiver bloqueado para gravação. Isso retornará um erro, pois os bloqueios são exclusivos.
Exemplos
No exemplo a seguir, um IWICBitmap é criado e os dados da imagem são limpos usando um 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 com suporte | Windows XP com SP2, Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | wincodec.h |
Biblioteca | Windowscodecs.lib |
DLL | Windowscodecs.dll |