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