2011-01-13 1 views
6

Прямо сейчас моя цель - иметь сглаженный текст на моих ярлыках. Если мои исследования были правильными, SWT Labels не поддерживают антиалиасинг в тексте, поэтому моя текущая попытка обхода - создать изображение, включить сглаживание текста, нарисовать текст на этом изображении, а затем придать этому изображению метку ,Почему не работает текстовое сглаживание, используя 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; 

У меня были противоречивые результаты на двух разных компьютерах: На работе, текст в полученных изображений выглядит рывками, как Вечно, как будто текст анти -Алисации даже не было. Но дома, подключенного к моему рабочему компьютеру через удаленный рабочий стол, я видел именно те результаты, которые я хотел.

Очевидно, что мне бы хотелось, чтобы на обоих компьютерах все правильно работало, но в настоящее время я в тупике, почему они не являются. На каждом компьютере работает Windows 7, Eclipse v3.6.

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

+0

Может быть, две машины пытаются Сглаживание разные шрифты? – MusiGenesis

+0

Они должны использовать шрифт «Тахома». – Dylan

+0

Я предполагаю, что это связано с различиями между видеокартами на двух машинах. SWT использует собственные средства ОС, которые включают в себя любые аппаратные средства, используемые ОС. Поэтому я по возможности посмотрю на замену графической карты на работу. Возможно, даже посмотрите на уровни патчей каждой машины, хотя оба используют Windows 7. –

ответ

1

Проверьте, поддерживается ли поддержка текста с использованием алиасов по-разному на обеих машинах панели управления. В XP вы должны убедиться, что ClearType включен.

http://www.microsoft.com/typography/cleartype/tuner/step1.aspx

Вы также можете посмотреть на эту статью. Это может сыграть свою роль.

http://www.ytechie.com/2008/12/cleartype-in-remote-desktop-with-xp.html

+0

Я рассмотрю это, спасибо. – Dylan

0

Если вы не можете заставить его работать в SWT, возможно, вы можете попробовать выполнить рендеринг изображения Swing и скопировать результирующие пиксели.

Смежные вопросы