如何改变wxFreeChart中的系列颜色和画笔?

How to change the serie colur and pen in wxFreeChart?

我在我的项目中使用了 wxFreeChart 库。但是我无法更改 XY 数据系列中的颜色和线型。在文档和示例中都没有此类功能的示例。也没有直接的功能可以做到这一点。有没有人有使用这个库的经验来说明它是否可能?

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

这些属性是通过 XYLineRenderer class 设置的。文档确实涵盖了这一点,但您必须单击 "List all members" 才能看到它们。当前文档可在 XYLineRenderer Members.

下找到

对于简单的更改,您可以使用 XYDataset::GetRenderer() 方法访问 XYLineRenderer。此 returns 一个 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 更加一致。