Método IWICBitmapLock::GetDataPointer (wincodec.h)
Obtiene el puntero al píxel superior izquierdo del rectángulo bloqueado.
Sintaxis
HRESULT GetDataPointer(
[out] UINT *pcbBufferSize,
[out] WICInProcPointer *ppbData
);
Parámetros
[out] pcbBufferSize
Tipo: UINT*
Puntero que recibe el tamaño del búfer.
[out] ppbData
Tipo: BYTE**
Puntero que recibe un puntero al píxel superior izquierdo del rectángulo bloqueado.
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
El puntero proporcionado por este método no debe usarse fuera de la duración del propio bloqueo.
GetDataPointer no está disponible en aplicaciones de apartamento multiproceso.
Ejemplos
En el ejemplo siguiente, los datos a los que apunta IWICBitmapLock son ceros.
IWICImagingFactory *pFactory = NULL;
IWICBitmap *pBitmap = NULL;
UINT uiWidth = 640;
UINT uiHeight = 480;
WICPixelFormatGUID formatGUID = GUID_WICPixelFormat32bppARGB;
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;
// Retrieve the stride.
hr = pLock->GetStride(&cbStride);
if (SUCCEEDED(hr))
{
hr = pLock->GetDataPointer(&cbBufferSize, &pv);
}
if (SUCCEEDED(hr))
{
// Access the bitmap memory starting at pv, where
// each row begins cbStride bytes after the start
// of the preceding row.
}
// Release the bitmap lock.
pLock->Release();
}
}
if (pBitmap)
{
pBitmap->Release();
}
if (pFactory)
{
pFactory->Release();
}
return hr;
Requisitos
Requisito | Value |
---|---|
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 |