gpt4 book ai didi

c++ - 如何用 ID2D1PathGeometry 画一个圆

转载 作者:太空狗 更新时间:2023-10-29 20:15:15 24 4
gpt4 key购买 nike

ID2D1PathGeometry::Open 返回一个支持添加直线、圆弧和曲线的 ID2D1GeometrySink。但是有没有办法添加一个圆(椭圆),或者至少以某种方式模拟一个圆?

最佳答案

使用 AddArc 函数,您可以简单地绘制两条具有相同 x 和 y 半径的圆弧来构建一个圆。这是图片和代码,希望这可以帮助你。

enter image description here

// create circle with two arcs
hr = g_pD2DFactory->CreatePathGeometry(&g_pCircleGeometry) ;
if (SUCCEEDED(hr))
{
ID2D1GeometrySink *pSink = NULL;

hr = g_pCircleGeometry->Open(&pSink);
if (SUCCEEDED(hr))
{
pSink->SetFillMode(D2D1_FILL_MODE_WINDING);

pSink->BeginFigure(
D2D1::Point2F(100, 300), // Start point of the top half circle
D2D1_FIGURE_BEGIN_FILLED
);

// Add the top half circle
pSink->AddArc(
D2D1::ArcSegment(
D2D1::Point2F(400, 300), // end point of the top half circle, also the start point of the bottom half circle
D2D1::SizeF(150, 150), // radius
0.0f, // rotation angle
D2D1_SWEEP_DIRECTION_CLOCKWISE,
D2D1_ARC_SIZE_SMALL
));

// Add the bottom half circle
pSink->AddArc(
D2D1::ArcSegment(
D2D1::Point2F(100, 300), // end point of the bottom half circle
D2D1::SizeF(150, 150), // radius of the bottom half circle, same as previous one.
0.0f, // rotation angle
D2D1_SWEEP_DIRECTION_CLOCKWISE,
D2D1_ARC_SIZE_SMALL
));

pSink->EndFigure(D2D1_FIGURE_END_CLOSED);
}
hr = pSink->Close();
SAFE_RELEASE(pSink);
}

关于c++ - 如何用 ID2D1PathGeometry 画一个圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13854168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com