0

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

起初我尝试使用糟糕的开罗。我想我也不应该靠近 Pango 的任何地方。

现在我正在使用这样的东西:Using prerendered characters for text。

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 窗口上滚动效果很好。

4

0 回答 0