现在我的目标是在我的标签上添加抗锯齿文本。如果我的研究是正确的,SWT 标签本身不支持文本抗锯齿,所以我目前的解决方法是创建一个图像,打开文本抗锯齿,将我的文本绘制到该图像,然后将该图像提供给标签.
我目前的图像绘制代码如下:
Image image = new Image(Display.getDefault(), width, height);
GC gc = new GC(image);
gc.setAntialias(SWT.ON);
gc.setTextAntialias(SWT.ON);
gc.setBackground(background);
gc.fillRectangle(0, 0, width, height);
gc.setFont(font);
gc.setForeground(foreground);
int yPos = offset.y;
for (String rawLine : lines)
{
String line = rawLine.trim();
Point lineSize = gc.textExtent(line);
int xPos = offset.x;
switch (alignment)
{
case SWT.RIGHT:
xPos += width - lineSize.x;
break;
case SWT.CENTER:
xPos += width / 2 - lineSize.x / 2;
break;
case SWT.LEFT:
default:
xPos += 0;
}
gc.drawText(line, xPos, yPos, true);
yPos += lineSize.y;
}
gc.dispose();
return image;
我在两台不同的计算机上得到了不一致的结果:在工作中,生成的图像中的文本看起来像以前一样断断续续——好像文本抗锯齿甚至没有打开。但是在家里,通过远程桌面连接到我的工作计算机,我看到了我想要的结果。
显然,我希望两台计算机都能正常工作,但我目前对它们为什么不能正常工作感到困惑。每台计算机都运行 Windows 7,Eclipse v3.6。
导致这种不一致的问题可能是什么?如果我的解决方法很荒谬,我完全错过了一种更简单的方法,那是什么方法?感谢您的任何帮助!