gtkmm goocanvas如何获得渲染文本的大小

时间:2014-01-03 18:28:34

标签: gtk gtkmm

我想要一个带有包含文本的矩形项目的goocanvas。

如何使用rect构建组以将文本添加为​​子项是众所周知的。但我想知道文本的大小,以便为框(rect)提供足够的空间来显示完整的文本。

 txt->property_width()

提供0! : - (

Glib::RefPtr<Goocanvas::Text> txt = Goocanvas::Text::create( "W123", 0, 0 );
Goocanvas::Bounds b = txt->get_bounds();
cout << b.get_x1() << endl;
cout << b.get_x2() << endl;
cout << b.get_y1() << endl;
cout << b.get_y2() << endl;

所有值均为零!

哇!如果我将代码更改为:

Glib::RefPtr<Goocanvas::Text> txt = Goocanvas::Text::create( "W123", 0, 0 );
Goocanvas::Bounds b = txt->get_bounds();


GooCanvasBounds bounds;
goo_canvas_item_get_bounds (( GooCanvasItem*)txt->gobj(), &bounds);


cout << b.get_x1() << endl;
cout << b.get_x2() << endl;
cout << b.get_y1() << endl;
cout << b.get_y2() << endl;

输出符合预期!注意:我看不到界限var!我还在寻找 'B'。看起来很奇怪!

[编辑]我写了一个错误报告:https://bugzilla.gnome.org/show_bug.cgi?id=721627

1 个答案:

答案 0 :(得分:0)

如果您的文字是GooCanvasText项,那么您所需要的只是(在gtk +中)

void  goo_canvas_item_get_bounds (GooCanvasItem *item, GooCanvasBounds *bounds)

这转换为txt->get_bounds()案例中的gtkmm。有关详细信息,请参阅goocanvas online devhelp