java - 如何在paintListener中垂直对齐不同的字体

标签 java fonts swt

我有自定义绘画小部件,我必须绘制一些具有不同字体大小的文本。 示例:

paintListener = new PaintListener() {
    public void paintControl(PaintEvent e) {
        int verticalOffset = 10;
        Font smallFont = SWTResourceManager.getFont("", 8, SWT.BOLD);
        e.gc.setFont(smallFont);
        String text1 = "test1";
        Point text1Size = e.gc.textExtent(text1);
        e.gc.drawText(text1, 0, e.y - text1Size.y - verticalOffset);

        Font bigFont = SWTResourceManager.getFont("", 12, SWT.NONE);
        e.gc.setFont(bigFont);
        String text2 = "test2";
        Point text2Size = e.gc.textExtent(text2);
        e.gc.drawText(text2, e.x - text2Size.x, e.y - text2Size.y - verticalOffset);
    }
}

我想知道如何垂直对齐这两个文本,或者是否可以计算 textExtent 返回的区域和字体基线之间的距离。

最佳答案

您可以从GC获取当前字体的FontMetrics:

ec.gc.setFont(xxxx);

FontMetrics metrics = e.gc.getFontMetrics();

FontMetricsgetDescent() getHeight() ...方法,允许您调整绘图位置。

关于java - 如何在paintListener中垂直对齐不同的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32733406/

相关文章:

java - 如何更新 SWT 组合框中的项目列表?

java - 将 ScrollableComposite 位置设置为位置

java - SWT:显示菜单项的工具提示

java - 媒体播放器错误(-38,0)

java - 删除 Hibernate 生成的延迟初始化代理的最安全方法是什么?

fonts - 如何使 Arch Linux 上的 Snap Store 字体显示为文本而不是空矩形?

css - 缩小时字体字符乱七八糟

java - 如何增大字体大小

java - 在 Restful Web 服务中打开 Tomcat 服务器上的 html 文件

java - 正则表达式:匹配字符串中两个标签之间的字符串