Array<byte>^ 转成 WriteableBitmap^
开发过程中经常遇到Array<byte>^ 转成 WriteableBitmap^的问题。
刚好抽空写个方法,让大家参数。
首先:
byte* BufferFromWriteableBitmap(WriteableBitmap^ bitmap)
{
IUnknown* pUnknown = reinterpret_cast<IUnknown*>(bitmap->PixelBuffer);
IBufferByteAccess* pBufferByteAccess = nullptr;
HRESULT hr = pUnknown->QueryInterface(IID_PPV_ARGS(&pBufferByteAccess));
pUnknown->Release();
byte *pPixels = nullptr;
hr = pBufferByteAccess->Buffer(&pPixels);
return pPixels;
}
WriteableBitmap 应该是用DX 实现的。(个人感觉)
通过调用上面的接口可以得到WriteableBitmap 的内存指针,
然后把数据拷贝到指针中, 就可以了。 比如:
WriteableBitmap^ result = ref new WriteableBitmap(lWidth,lHeight);
Array<unsigned char,1>^ myarray ;图片的数据
byte *pPixels = BufferFromWriteableBitmap(result);
memcpy(pPixels, ((void *)myarray->Data, ,myarray->Length);
result->Invalidate();