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。 這樣做會傳回錯誤,因為鎖定是獨佔的。
範例
在下列範例中, 會建立 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 搭配 SP2、Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | wincodec.h |
程式庫 | Windowscodecs.lib |
Dll | Windowscodecs.dll |