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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值