如何在wxFreeChart中更改系列颜色和笔?

时间:2016-08-21 12:57:52

标签: wxwidgets

我在我的项目中使用wxFreeChart库。但是,我无法更改XY数据系列中的颜色和线型。在文档和样本中都没有这种功能的例子。此外,还没有直接的功能允许这样做。有没有人有这个图书馆的经验,说它是否可能?

1 个答案:

答案 0 :(得分:1)

是的,可以为XY折线图设置系列颜色和笔类型。

这些属性是通过XYLineRenderer类设置的。文档确实涵盖了这一点,但你必须点击"列出所有成员"去看他们。目前的文档可在XYLineRenderer Members下找到。

对于简单的更改,您可以使用XYLineRenderer方法访问XYDataset::GetRenderer()。这将返回XYRenderer*,您需要将其转换为XYLineRenderer*才能设置笔类型。当然,您可以先创建XYLineRenderer*,然后将其传递给XYDataset::SetRenderer方法。

以下是一个例子:

// Set the colour and pen of the first series.
static_cast<XYLineRenderer*>(dataset->GetRenderer())
                ->SetSeriePen(0, new wxPen(*wxRED, 5, wxPENSTYLE_SHORT_DASH));

// Set the colour and pen of the second series.
static_cast<XYLineRenderer*>(dataset->GetRenderer())
                ->SetSeriePen(1, new wxPen(*wxBLUE, 1, wxPENSTYLE_DOT_DASH));

SetSeriePen仅适用于XYLineRenderer,原因很明显,但您可以使用Renderer::SetSerieColour(size_t serie, wxColour *color)设置任何渲染器的颜色。

注意:我对wxFreeChart在这些函数中使用指针的方式不满意。这个项目没有得到积极的维护,但是我想在某个时候将它分叉并更新API以便与现代版本的C ++和wxWidgets更加一致。