次の方法で共有


IWICBitmap::Lock メソッド (wincodec.h)

ビットマップの四角形領域へのアクセスを提供します。

構文

HRESULT Lock(
  [in]  const WICRect  *prcLock,
  [in]  DWORD          flags,
  [out] IWICBitmapLock **ppILock
);

パラメーター

[in] prcLock

型: const WICRect*

アクセスする四角形。

[in] flags

型: DWORD

ロック用に取得するアクセス モード。 これは、読み取り、書き込み、または読み取りおよび書き込みアクセスの WICBitmapLockFlags のビットごとの組み合わせです。

説明
WICBitmapLockRead
読み取りアクセス ロック。
WICBitmapLockWrite
書き込みアクセス ロック。

[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