如何在 paintListener 中垂直对齐不同的字体
How to align vertically different fonts in paintListener
我有自定义绘图小部件,我必须绘制一些不同字体大小的文本。
示例:
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();
FontMetrics
有 getDescent()
getHeight()
... 允许您调整绘图位置的方法。
我有自定义绘图小部件,我必须绘制一些不同字体大小的文本。 示例:
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();
FontMetrics
有 getDescent()
getHeight()
... 允许您调整绘图位置的方法。