我想要一个带有包含文本的矩形项目的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
答案 0 :(得分:0)
如果您的文字是GooCanvasText
项,那么您所需要的只是(在gtk +中)
void goo_canvas_item_get_bounds (GooCanvasItem *item, GooCanvasBounds *bounds)
这转换为txt->get_bounds()
案例中的gtkmm
。有关详细信息,请参阅goocanvas online devhelp。