Freigeben über


IWICBitmap::Lock-Methode (wincodec.h)

Ermöglicht den Zugriff auf einen rechteckigen Bereich der Bitmap.

Syntax

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

Parameter

[in] prcLock

Typ: const WICRect*

Das Rechteck, auf das zugegriffen werden soll.

[in] flags

Art: DWORD

Der Zugriffsmodus, den Sie für die Sperre abrufen möchten. Dies ist eine bitweise Kombination von WICBitmapLockFlags für Lese-, Schreib- oder Lese- und Schreibzugriff.

Wert Bedeutung
WICBitmapLockRead
Die Lesezugriffssperre.
WICBitmapLockWrite
Die Schreibzugriffssperre.

[out] ppILock

Typ: IWICBitmapLock**

Ein Zeiger, der den gesperrten Speicherort des Arbeitsspeichers empfängt.

Rückgabewert

Typ: HRESULT

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Sperren sind exklusiv für das Schreiben, können aber zum Lesen freigegeben werden. Sie können CopyPixels nicht aufrufen, während die IWICBitmap zum Schreiben gesperrt ist. Dadurch wird ein Fehler zurückgegeben, da Sperren exklusiv sind.

Beispiele

Im folgenden Beispiel wird eine IWICBitmap erstellt, und die Bilddaten werden mithilfe eines IWICBitmapLock gelöscht.



    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;

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP mit SP2, Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wincodec.h
Bibliothek Windowscodecs.lib
DLL Windowscodecs.dll