IWICBitmapLock::GetDataPointer 方法 (wincodec.h)
取得鎖定矩形中左上方圖元的指標。
語法
HRESULT GetDataPointer(
[out] UINT *pcbBufferSize,
[out] WICInProcPointer *ppbData
);
參數
[out] pcbBufferSize
類型: UINT*
接收緩衝區大小的指標。
[out] ppbData
類型: BYTE**
指標,接收鎖定矩形中左上方圖元的指標。
傳回值
類型: HRESULT
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
這個方法提供的指標不應該在鎖定本身的存留期之外使用。
多線程 Apartment 應用程式中無法使用 GetDataPointer。
範例
在下列範例中, IWICBitmapLock 所指向的數據是零的。
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;
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP 搭配 SP2、Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | wincodec.h |
程式庫 | Windowscodecs.lib |
Dll | Windowscodecs.dll |