У меня есть два графика рисования сигналов в приложении gtkmm.
Проблема возникает, когда мне приходится рисовать график с множеством точек (около 300-350k) и линиями к следующим точкам, поскольку он замедляется много, чтобы нарисовать все точки на каждой итерации.
bool DrawArea::on_draw(const Cairo::RefPtr<Cairo::Context>& c)
{
cairo_t* cr = c->cobj();
//xSignal.size() = ySignal.size() = 350000
for (int j = 0; j < xSignal.size() - 1; ++j)
{
cairo_move_to(cr, xSignal[j], ySignal[j]);
cairo_line_to(cr, xSignal[j + 1], ySignal[j + 1]);
}
cairo_stroke(cr);
return true;
}
Я знаю, что существует cairo_stroke_preserve , но я думаю, что это недопустимо для меня, потому что когда я переключаюсь между графиками, он исчезает.
Я исследовал вопрос о сохранении пути и его восстановлении в документации по Каиру, но ничего не вижу. В 2007 году пользователь из Каира предложил в документации «сделать» то же самое, но, видимо, это не было сделано.
Любое предложение?