Метод IWICBitmap::Lock (wincodec.h)
Предоставляет доступ к прямоугольной области растрового изображения.
Синтаксис
HRESULT Lock(
[in] const WICRect *prcLock,
[in] DWORD flags,
[out] IWICBitmapLock **ppILock
);
Параметры
[in] prcLock
Тип: const WICRect*
Прямоугольник, к который требуется получить доступ.
[in] flags
Тип: DWORD
Режим доступа, который вы хотите получить для блокировки. Это побитовое сочетание WICBitmapLockFlags для доступа на чтение, запись или чтение и запись.
Значение | Значение |
---|---|
|
Блокировка доступа на чтение. |
|
Блокировка доступа на запись. |
[out] ppILock
Тип: IWICBitmapLock**
Указатель, который получает заблокированное расположение памяти.
Возвращаемое значение
Тип: HRESULT
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Блокировки являются эксклюзивными для записи, но могут быть общими для чтения. Вы не можете вызвать CopyPixels , пока IWICBitmap заблокирован для записи. Это приведет к ошибке, так как блокировки являются монопольными.
Примеры
В следующем примере создается IWICBitmap , а данные изображения очищаются с помощью 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;
Требования
Минимальная версия клиента | Windows XP с пакетом обновления 2 (SP2), Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincodec.h |
Библиотека | Windowscodecs.lib |
DLL | Windowscodecs.dll |