我正在尝试使用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窗口上滚动效果很好。