Bagikan melalui


Metode IWICBitmapLock::GetDataPointer (wincodec.h)

Mendapatkan penunjuk ke piksel kiri atas di persegi panjang terkunci.

Sintaks

HRESULT GetDataPointer(
  [out] UINT             *pcbBufferSize,
  [out] WICInProcPointer *ppbData
);

Parameter

[out] pcbBufferSize

Jenis: UINT*

Penunjuk yang menerima ukuran buffer.

[out] ppbData

Jenis: BYTE**

Penunjuk yang menerima penunjuk ke piksel kiri atas di persegi panjang terkunci.

Nilai kembali

Jenis: HRESULT

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

Keterangan

Pointer yang disediakan oleh metode ini tidak boleh digunakan di luar masa pakai kunci itu sendiri.

GetDataPointer tidak tersedia di aplikasi apartemen multi-utas.

Contoh

Dalam contoh berikut, data yang diarahkan oleh IWICBitmapLock adalah nol.


    IWICImagingFactory *pFactory = NULL;
    IWICBitmap *pBitmap = NULL;

    UINT uiWidth = 640;
    UINT uiHeight = 480;
    WICPixelFormatGUID formatGUID = GUID_WICPixelFormat32bppARGB;

    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;

            // Retrieve the stride.
            hr = pLock->GetStride(&cbStride);

            if (SUCCEEDED(hr))
            {
                hr = pLock->GetDataPointer(&cbBufferSize, &pv);
            }
            if (SUCCEEDED(hr))
            {
                // Access the bitmap memory starting at pv, where
                // each row begins cbStride bytes after the start
                // of the preceding row.
            }

            // Release the bitmap lock.
            pLock->Release();
        }
    }

    if (pBitmap)
    {
        pBitmap->Release();
    }

    if (pFactory)
    {
        pFactory->Release();
    }

    return hr;

Persyaratan

Persyaratan Nilai
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