다음을 통해 공유


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
라이브러리 Windowscodecs.lib
DLL Windowscodecs.dll