IWICBitmapLock::GetDataPointer 메서드(wincodec.h)
잠긴 사각형의 왼쪽 위 픽셀에 대한 포인터를 가져옵니다.
구문
HRESULT GetDataPointer(
[out] UINT *pcbBufferSize,
[out] WICInProcPointer *ppbData
);
매개 변수
[out] pcbBufferSize
형식: UINT*
버퍼의 크기를 받는 포인터입니다.
[out] ppbData
형식: BYTE**
잠긴 사각형의 왼쪽 위 픽셀에 대한 포인터를 받는 포인터입니다.
반환 값
형식: HRESULT
메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.
설명
이 메서드에서 제공하는 포인터는 잠금 자체의 수명 외에 사용하면 안 됩니다.
GetDataPointer 는 다중 스레드 아파트 애플리케이션에서 사용할 수 없습니다.
예제
다음 예제에서는 IWICBitmapLock 이 가리키는 데이터가 0입니다.
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;
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | WINDOWS XP SP2, Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | wincodec.h |
라이브러리 | Windowscodecs.lib |
DLL | Windowscodecs.dll |