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 |
Library | Windowscodecs.lib |
[DLL] | Windowscodecs.dll |