現在我的目標是在我的標籤上使用反鋸齒文字。如果我的研究是正確的,SWT標籤本身不支持文本上的抗鋸齒,所以我目前的解決方法是嘗試創建一個圖像,打開文本消除鋸齒,將文本繪製到該圖像,然後將該圖像提供給標籤。使用SWT GC繪製文本時,爲什麼文本抗鋸齒工作不正常?
我當前圖像的繪製代碼如下:
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;
我曾在兩個不同的計算機上不一致的結果: 在工作中,所產生的圖像的文本顯示爲ever-彷彿文本作爲防震盪 - 平滑甚至沒有。但在家裏,通過遠程桌面連接到我的工作電腦,我看到了我想要的結果。
很顯然,我希望事情能夠在兩臺計算機上正常工作,但我目前難以理解它們爲什麼不是。每臺電腦都運行Windows 7,Eclipse v3.6。
可能是導致這種不一致的問題?如果我的解決方法是荒謬的,我完全錯過了一個更簡單的方法,那是什麼方式?感謝您的任何幫助!
也許兩臺機器正在試圖消除鋸齒兩種不同的字體? – MusiGenesis 2011-01-13 20:09:31
他們都應該使用「Tahoma」字體。 – Dylan 2011-01-13 20:39:07