如何画多条不同颜色的直线和圆弧?

问题描述 投票:0回答:2

在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 像素。

我错过了什么?

c++ wxwidgets
2个回答
1
投票

路径是在调用 gc->StrokePath 时使用活动笔绘制的,而不是之前。 所以第一笔的选择没有影响。


0
投票

正如 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);

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.