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 错误代码。
注解
锁是专用于写入的,但可以共享以供读取。 当 IWICBitmap 被锁定以便写入时,无法调用 CopyPixels。 这样做将返回错误,因为锁是独占的。
示例
在以下示例中,将使用 IWICBitmapLock 创建 IWICBitmap 并清除图像数据。
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 SP2、Windows Vista [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | wincodec.h |
Library | Windowscodecs.lib |
DLL | Windowscodecs.dll |