如何提高文本呈现性能。 Gdk :: Drawable上的自定义文本视图

时间:2012-06-11 17:09:49

标签: c++ performance cairo gtkmm text-rendering

我正在尝试使用Gtkmm和Gdk :: Drawable编写类似十六进制编辑器的东西。只是一个十六进制视图来准确。

起初我尝试使用开罗,这太可怕了。我想我不应该靠近Pango的任何地方。

现在我正在使用这样的东西:为文本使用预渲染字符。

void HexView::on_vScrl_value_changed() {
    drawingArea.queue_draw();
}

bool HexView::DrawingArea::on_expose_event(GdkEventExpose* event) {
    /* */
    Glib::RefPtr<Gdk::Window> window = get_window();
    if(window && data && numBytes) {
        /* */
        unsigned int scrlY = hexView->vScrl.get_value();
        /* */

        for(/*loop visible bytes*/) {
            /* */
            window->draw_pixbuf(char_pixbuf, 0, 0, x, y, 20, 20, Gdk::RGB_DITHER_NONE, 0, 0);
        }
    }
    return true;
}

这使渲染和滚动变得可以忍受,但仍然很慢。 CPU在一个小弹簧上晃动并滚动手柄,稍稍滞后。在800x300的小面积上:(

有任何改进的想法吗?

Gtk :: TexView小部件可以完美呈现大量文本,并且在1600x1200窗口上滚动效果很好。

0 个答案:

没有答案