计算字符串的像素大小

时间:2017-05-22 07:54:59

标签: r gwidgets

我正在使用R和gWidgets(主要使用RGtk2工具包)构建GUI。此GUI将在某些位置显示基于(数据定义的)字符串的标签。这个字符串可以任意长,但是如果它太长就会破坏GUI,因为它会强制小部件放大,从而扩大所有父级。

所以,我需要根据标签的可用空间将字符串修剪为一个长度。我可以看到两个解决方案:

  1. 强制glabel的最大尺寸=其父母的大小;这似乎不可行,但我很高兴在这里得到纠正;

  2. 确定字符串的长度,如果太长,则在渲染之前剪切它。这似乎更容易,可能使用低级pango函数,但我无法找到如何使用它们。

  3. 伪代码:

    interface <- gwindow()
    text <- "A Very very long label just to see what happens if you try to deliberately break the identification panel with stupidly long strings"
    box <- gvbox(cont = interface)
    lab <- glabel(text = text, cont = box)
    

    创意1:

    lab <- glabel(text = text, cont = box,maxsize = size(box))
    

    创意2:

    strLength <- strwidth(text, font = ???)
    if strLength > size(box)[1] {
        # Do something about it...
    }
    

    这里我的问题是font=的语法。如何读取窗口小部件当前使用的字体的定义,并将其转换为R友好字体语法?或者是否有更好的方法(低级pango函数?)来获得字符串大小?

0 个答案:

没有答案