上下文
我尝试在游戏中绘制统计饼图。我正在使用Cocos2d-x ver.3.8.1。游戏的大小很重要,所以我不会使用第三方框架来创建饼图
的问题
我在Cocos2d-x中找不到任何合适的方法来绘制圆的一部分
我试图
我试图在互联网上找到解决这个问题的方法,但没有成功
众所周知,圆的扇形=三角形+分段。所以,我也尝试使用drawSegment()
中的DrawNode
方法。
虽然它有参数radius
(“段半径”写在API reference中),但半径仅影响线的粗细。
drawSegment()
方法绘制一条简单的线条,其粗细由方法调用设置
的问题
请提示我,如何在Cocos2d-x中绘制一个圆段或一个圆圈?
任何建议将不胜感激,谢谢。
答案 0 :(得分:3)
我认为在Cocos2d-X中绘制圆圈扇区的方法之一是在drawPolygon
上使用DrawNode
的方法。我写了很少的样本。
void drawSector(cocos2d::DrawNode* node, cocos2d::Vec2 origin, float radius, float angle_degree,
cocos2d::Color4F fillColor, float borderWidth, cocos2d::Color4F bordercolor,
unsigned int num_of_points = 100)
{
if (!node)
{
return;
}
const cocos2d::Vec2 start = origin + cocos2d::Vec2{radius, 0};
const auto angle_step = 2 * M_PI * angle_degree / 360.f / num_of_points;
std::vector<cocos2d::Point> circle;
circle.emplace_back(origin);
for (int i = 0; i <= num_of_points; i++)
{
auto rads = angle_step * i;
auto x = origin.x + radius * cosf(rads);
auto y = origin.y + radius * sinf(rads);
circle.emplace_back(x, y);
}
node->drawPolygon(circle.data(), circle.size(), fillColor, borderWidth, bordercolor);
}
这是计算圆的边缘点的位置和绘制多边形的函数。如果你想使用它,你需要调用如下,
auto canvas = DrawNode::create();
drawSector(canvas, cocos2d::Vec2(400, 400), 100, 60, cocos2d::Color4F::GREEN, 2, cocos2d::Color4F::BLUE, 100);
this->addChild(triangle);
结果就是这样。我认为代码可以帮助您解决问题。