IWICBitmap::Metode kunci (wincodec.h)

Menyediakan akses ke area persegi panjang bitmap.

Sintaks

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

Parameter

[in] prcLock

Jenis: const WICRect*

Persegi panjang yang akan diakses.

[in] flags

Jenis: DWORD

Mode akses yang ingin Anda peroleh untuk kunci. Ini adalah kombinasi bitwise dari WICBitmapLockFlags untuk akses baca, tulis, atau baca dan tulis.

Nilai Makna
WICBitmapLockRead
Kunci akses baca.
WICBitmapLockWrite
Kunci akses tulis.

[out] ppILock

Jenis: IWICBitmapLock**

Penunjuk yang menerima lokasi memori terkunci.

Nilai kembali

Jenis: HRESULT

Jika metode ini berhasil, metode ini mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Kunci eksklusif untuk menulis tetapi dapat dibagikan untuk membaca. Anda tidak dapat memanggil CopyPixels saat IWICBitmap dikunci untuk menulis. Melakukannya akan mengembalikan kesalahan, karena kunci bersifat eksklusif.

Contoh

Dalam contoh berikut, IWICBitmap dibuat dan data gambar dibersihkan menggunakan 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;

Persyaratan

   
Klien minimum yang didukung Windows XP dengan SP2, Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header wincodec.h
Pustaka Windowscodecs.lib
DLL Windowscodecs.dll