Почему не работает сглаживание текста при использовании 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.

В чем может быть проблема, которая вызывает это несоответствие? И если мой обходной путь просто абсурден, и я полностью упускаю более простой способ, что это значит? Спасибо за любую помощь!

6
задан Dylan 13 January 2011 в 20:04
поделиться