ID2D1Bitmap 和 ID2D1Bitmap1 互转只要调用
ID2D1Bitmap->CopyFromBitmap(); 就可以了
注:ID2D1Bitmap是设备相关的资源,同一个呈现器创建的bitmap才可以互相拷贝。
ID2D1Bitmap1 map的用法
如果要使用map,生成ID2D1Bitmap1的时候一定要使用
D2D1_BITMAP_OPTIONS_CPU_READ
ComPtr<ID2D1Bitmap1> bitmap1; D2D1_BITMAP_PROPERTIES1 prop = D2D1::BitmapProperties1( D2D1_BITMAP_OPTIONS_CPU_READ | D2D1_BITMAP_OPTIONS_CANNOT_DRAW, D2D1::PixelFormat( DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE ) ); HRESULT hr = m_d2dDeviceContext->CreateBitmap( D2D1::SizeU(m_Width,m_Height), nullptr, 0, &prop, &bitmap1 ); D2D1_POINT_2U point =D2D1::Point2U(0,0); D2D1_RECT_U rect2 = D2D1::RectU(0,0,m_Width,m_Height); hr = bitmap1->CopyFromBitmap(&point,m_D2d1BitmapOri.Get(),&rect2); D2D1_MAP_OPTIONS options = D2D1_MAP_OPTIONS_READ; D2D1_MAPPED_RECT mappedRect; Array<byte>^ pData = ref new Array<byte>(m_Width*m_Height*4); hr = bitmap1->Map(options, &mappedRect); memcpy(pData->Data, mappedRect.bits, m_Width*m_Height*4); hr = bitmap1->Unmap(); return pData;备份
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。