ID2D1Bitmap 转 ID2D1Bitmap1 , ID2D1Bitmap::map用法






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;
备份

http://social.msdn.microsoft.com/Forums/en-ZW/winappswithnativecode/thread/c9426e4c-56a0-48b6-96d1-105e9e9e581e


http://social.msdn.microsoft.com/Forums/no/winappswithnativecode/thread/a4f6d338-0b62-48d6-ac5a-ccd9f4f52fea

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
China Scenic Area
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告