Direct2D 几何计算和几何变幻
2013-07-28 14:54
344 查看
D2D不仅可以绘制,还可以对多个几何图形对象进行空间运算。这功能应该在GIS界比较吃香。
这些计算包括:
合并几何对象,可以设置求交还是求并,CombineWithGeometry
边界,加宽边界,查询边界。Widen、GetBounds、GetWidenedBounds
几何对象填充的区域是否包含指定点,FillContainsPoint
笔画是否包含点,StrokeContainsPoint
几何对象与指定几何对象之间的交集,CompareWithGeometry
创建仅包含直线和(可选)三次方贝塞尔曲线的简化版本的几何对象,Simplify
网格化,创建一组顺时针缠绕的三角形,Tessellate
计算几何对象的轮廓(移除交集),Outline
几何对象上指定距离处的点和正切矢量,ComputePointAtLength
计算几何对象的面积,ComputeArea
计算几何对象的长度,ComputeLength
写一个合并的例子:对两个圆求并集,并将绘制结果存存储到一个path中,在组成path的关节的过程中需要用sink对象。最后绘制path
除此之外,D2D还支持对几何对象的变幻,包括:
旋转,
缩放,
平移,
可以用pRenderTarget的SetTransform来设置。
这些计算包括:
合并几何对象,可以设置求交还是求并,CombineWithGeometry
边界,加宽边界,查询边界。Widen、GetBounds、GetWidenedBounds
几何对象填充的区域是否包含指定点,FillContainsPoint
笔画是否包含点,StrokeContainsPoint
几何对象与指定几何对象之间的交集,CompareWithGeometry
创建仅包含直线和(可选)三次方贝塞尔曲线的简化版本的几何对象,Simplify
网格化,创建一组顺时针缠绕的三角形,Tessellate
计算几何对象的轮廓(移除交集),Outline
几何对象上指定距离处的点和正切矢量,ComputePointAtLength
计算几何对象的面积,ComputeArea
计算几何对象的长度,ComputeLength
写一个合并的例子:对两个圆求并集,并将绘制结果存存储到一个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来设置。
相关文章推荐
- Direct2D 几何计算和几何变幻
- Direct2D 几何计算和几何变幻
- uva 12304 2D Geometry 110 in 1! 计算几何
- Direct2D教程(三)简单几何图形
- 计算几何 - UVA - 12304(附2D计算几何模板)
- Direct2D教程(三)简单几何图形
- 【UVa 12304】2D Geometry 110 in 1! (计算几何、圆)
- Direct2D (22) : 复合几何对象之 ID2D1TransformedGeometry
- 【Educational Codeforces Round 2D】【计算几何 圆面积交 模板】Area of Two Circles' Intersection
- Direct2D (23) : 复合几何对象之 ID2D1GeometryGroup
- Direct2D (24) : 合并几何对象
- UVA 12304 - 2D Geometry 110 in 1!(计算几何)
- 计算几何之求取三维维点集的凸包/ 凸多边形包围盒(2D、3D点集)
- Educational Codeforces Round 2D. Area of Two Circles' Intersection(计算几何+圆相交的面积)
- Direct2D教程III——几何(Geometry)对象
- Direct2D教程VIII——几何(Geometry)对象的运算,本系列的终结篇
- UVA12304 2D Geometry 110 in 1! 计算几何
- 计算几何模板+[Uva12304] 2D Geometry 110 in 1
- UVA 12304 2D Geometry 110 in 1!(计算几何)
- poj 2007, 乱搞,计算几何