Почему не работает сглаживание текста при использовании SWT GC для рисования текста?
прямо сейчас моя цель-иметь сглаженный текст на моих ярлыках. Если мои исследования были правильными, метки 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.
что может быть проблемой, которая вызывает эту несогласованность? И если мое обходное решение просто абсурдно, и я полностью упускаю проще, что это за путь? Спасибо за любую помощь!
2 ответов
Проверьте, настроена ли поддержка сглаживания текста по-разному на обеих машинах в Панели Управления. В XP вы бы хотели убедиться, что ClearType включен.
http://www.microsoft.com/typography/cleartype/tuner/step1.aspx
вы также можете посмотреть в этой статье. Это может сыграть свою роль.
http://www.ytechie.com/2008/12/cleartype-in-remote-desktop-with-xp.html
Если вы не можете заставить его работать в SWT, возможно, вы можете попробовать рендеринг на изображение Swing и скопировать результирующие пиксели.