在wxwidgets中我使用wxGraphicsContext和wxGraphicsPath来绘制两条弧线。我希望它们有不同的颜色:
gc->SetPen (wxPen (*wxRED, 8));
path.MoveToPoint (x, y);
path.AddArc (x, y, radius, angle_rad_1a, angle_rad_1b, true); // X, Y, radius, start angle, end angle, clockwise
gc->SetPen (wxPen (*wxBLUE, 4));
path.MoveToPoint (x, y);
path.AddArc (x, y, radius, angle_rad_2a, angle_rad_2b, true); // X, Y, radius, start angle, end angle, clockwise
gc->StrokePath (path);
但它全部显示为蓝色,宽度为 4 像素。
我错过了什么?
路径是在调用 gc->StrokePath 时使用活动笔绘制的,而不是之前。 所以第一笔的选择没有影响。
正如 Xaviou 所写,每个笔设置都需要一个 gc->StrokePath() 。 每个 gc->StrokePath() 都需要一个 gc->CreatePath()。 所以完成这项工作的代码如下所示:
path = gc->CreatePath();
gc->SetPen (wxPen (*wxRED, 8));
path.MoveToPoint (x, y);
path.AddArc (x, y, radius, angle_rad_1a, angle_rad_1b, true); // X, Y, radius, start angle, end angle, clockwise
gc->StrokePath (path);
path = gc->CreatePath();
gc->SetPen (wxPen (*wxBLUE, 4));
path.MoveToPoint (x, y);
path.AddArc (x, y, radius, angle_rad_2a, angle_rad_2b, true); // X, Y, radius, start angle, end angle, clockwise
gc->StrokePath (path);
希望有帮助