小编Luk*_*pas的帖子

在java中获取字符串大小(没有可用的Graphics对象)

我正在尝试编写需要使用Java中的Graphics2D类绘制许多字符串的应用程序.我需要获取每个String对象的大小(以计算每个字符串的确切位置).在调用paint()方法之前应该完成很多字符串,并且在程序开始时只执行一次(所以我还没有Graphics2D对象).我知道有一个方法Font.getStringBounds()但它需要一个FontRenderContext对象作为参数.

当我试图创建自己的对象时:

FontRenderContext frc = new FontRenderContext(MyFont.getTransform(), true, true)
Run Code Online (Sandbox Code Playgroud)

然后获取字符串边界我总是得到不同的大小,而不是我在paint()方法中使用Graphics2D.getFontRenderContext()方法获得FontRenderContext.差异不大(约1E-3),但我想知道为什么会有任何区别?

但是,有没有更好更安全的方法来获取字符串的大小?

Thnx提前提供任何帮助!

java string graphics2d bounds

12
推荐指数
1
解决办法
1万
查看次数

QTreeView和QAbstractItemModel&insertRow

我正在尝试为QTreeView实现QAbstractItemModel.我有插入行的问题.我注意到,如果我在我的应用程序的开头插入一切正常.但是如果我稍后插入行 - 在执行其他操作(如选择等)之后,新项目将保持不可见.而且QTreeView似乎根本不起作用!我是否必须发出一些信号来通知QTreeView有关行插入的信息?

这是我的插入方法:

bool LayersModel::insertRows(int position, int count, const QModelIndex  & parent)
{
    LayersModelItem * parentItem = getItem(parent);
    if (position > parentItem->childCount())
        return false;
    beginInsertRows(parent,position,position+count-1);
    bool result = true;
    for (;count;--count)
        result &= parentItem->insertChildren(position, new LayersModelItem());
    endInsertRows();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

LayersModelItem是具有QList及其子项和数据的类.

我的项目的完整代码(需要KDE库)在这里:https: //github.com/coder89/PhotoFramesEditor/tree/v0.0.8 要查看问题,请在主窗口中选择一个蓝色项目,然后右键单击它,选择"删除项目".(这个方法在Canvas :: removeItems())并且它是完整的评论 - 我很绝望,我试图找到这个问题的原因...(事实上它不是删除任何东西 - 它添加了新项目).

感谢您的帮助和建议!

qt qtreeview qabstractitemmodel insertion

5
推荐指数
1
解决办法
7508
查看次数

将 png 图像嵌入到 SVG 中

可能的重复:
SVG 是否支持位图图像的嵌入?

我正在尝试将 PNG 图像插入到 SVG 文件中。如果我使用 <image> 标签,我只能设置对 PNG 图像的引用。我不想将整个 PNG 数据放入 SVG,因为如果 PNG 文件将被移动或删除,我的 SVG 文件仍应使用这些 PNG 数据呈现。

SVG格式可以吗?

先感谢您!

svg image

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

bounds ×1

graphics2d ×1

image ×1

insertion ×1

java ×1

qabstractitemmodel ×1

qt ×1

qtreeview ×1

string ×1

svg ×1