Direct2D 图形计算

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

这些计算包括:

 

写一个合并的

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();

 

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

posted @ 2018-03-06 11:24  ye_ming  阅读(315)  评论(0编辑  收藏  举报