Direct2D 几何计算和几何变幻

D2D不仅可以绘制,还可以对多个几何图形对象进行空间运算。这功能应该在GIS界比较吃香。

这些计算包括:


写一个合并的例子:对两个圆求并集,并将绘制结果存存储到一个path中,在组成path的关节的过程中需要用sink对象。最后绘制path
pRenderTarget->BeginDraw();

	//clear screen
	pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));

	//define 2 ellipse
	const D2D1_ELLIPSE ellipse1 = Ellipse(Point2F(200,300),150,150);
	const D2D1_ELLIPSE ellipse2 = Ellipse(Point2F(200,250),100,200);

	//define ellipse geometry for compute
	ID2D1EllipseGeometry* pEllipse1 = NULL;
	ID2D1EllipseGeometry* pEllipse2 = NULL;
	//define path for render the combine result
	ID2D1PathGeometry* pPathGeo = NULL;
	//define a path container
	ID2D1GeometrySink* pGeometrySink = NULL;

	//initialize the ellipses and path.
	hr = pD2DFactory->CreateEllipseGeometry(ellipse1, &pEllipse1);
	hr = pD2DFactory->CreateEllipseGeometry(ellipse2, &pEllipse2);
	hr = pD2DFactory->CreatePathGeometry(&pPathGeo);

	//begin add path
	pPathGeo->Open(&pGeometrySink);
	//combine the 2 ellipse and the result go into the sink
	pEllipse1->CombineWithGeometry(pEllipse2, D2D1_COMBINE_MODE_UNION, NULL, NULL, pGeometrySink); 
	//end add path
	pGeometrySink->Close();
	//draw the path
	pRenderTarget->DrawGeometry(pPathGeo, pBlackBrush);

	pRenderTarget->EndDraw();

除此之外,D2D还支持对几何对象的变幻,包括:
  • 旋转,
  • 缩放,
  • 平移,
可以用pRenderTarget的SetTransform来设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值