Méthode IWICBitmap::Lock (wincodec.h)
Fournit l’accès à une zone rectangulaire de la bitmap.
Syntaxe
HRESULT Lock(
[in] const WICRect *prcLock,
[in] DWORD flags,
[out] IWICBitmapLock **ppILock
);
Paramètres
[in] prcLock
Type : const WICRect*
Rectangle à accéder.
[in] flags
Type : DWORD
Mode d’accès que vous souhaitez obtenir pour le verrou. Il s’agit d’une combinaison de bits de WICBitmapLockFlags pour l’accès en lecture, en écriture ou en lecture et en écriture.
Valeur | Signification |
---|---|
|
Verrou d’accès en lecture. |
|
Verrou d’accès en écriture. |
[out] ppILock
Type : IWICBitmapLock**
Pointeur qui reçoit l’emplacement de mémoire 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
Les verrous sont exclusifs pour l’écriture, mais peuvent être partagés pour la lecture. Vous ne pouvez pas appeler CopyPixels tant que le IWICBitmap est verrouillé pour l’écriture. Cela renvoie une erreur, car les verrous sont exclusifs.
Exemples
Dans l’exemple suivant, un IWICBitmap est créé et les données d’image sont effacées à l’aide d’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;
Configuration requise
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 |