Méthode IWICBitmapLock ::GetDataPointer (wincodec.h)
Obtient le pointeur vers le pixel supérieur gauche dans le rectangle verrouillé.
Syntaxe
HRESULT GetDataPointer(
[out] UINT *pcbBufferSize,
[out] WICInProcPointer *ppbData
);
Paramètres
[out] pcbBufferSize
Type : UINT*
Pointeur qui reçoit la taille de la mémoire tampon.
[out] ppbData
Type : BYTE**
Pointeur qui reçoit un pointeur vers le pixel supérieur gauche dans le rectangle verrouillé.
Valeur retournée
Type : HRESULT
Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.
Remarques
Le pointeur fourni par cette méthode ne doit pas être utilisé en dehors de la durée de vie du verrou lui-même.
GetDataPointer n’est pas disponible dans les applications d’appartement multithread.
Exemples
Dans l’exemple suivant, les données pointées par IWICBitmapLock sont nulles.
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;
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP avec SP2, Windows Vista [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | wincodec.h |
Bibliothèque | Windowscodecs.lib |
DLL | Windowscodecs.dll |