2011-01-13 13 views
6

In questo momento il mio obiettivo è di avere il testo anti-alias sulle mie etichette. Se la mia ricerca era corretta, SWT Labels non supporta nativamente l'anti-aliasing sul testo, quindi il mio attuale tentativo è di creare un'immagine, attivare l'anti-alias del testo, disegnare il mio testo su quell'immagine, quindi dare quell'immagine all'etichetta .Perché non funziona l'anti-aliasing del testo, mentre si usa un GC SWT per disegnare del testo?

Il mio codice di disegno immagine attuale è la seguente:

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; 

ho avuto risultati inconsistenti su due computer diversi: Al lavoro, il testo nelle immagini risultanti appare mosso come Ever- come se contro di testo -aliasing non era nemmeno attivo. Ma a casa, collegato al mio computer di lavoro tramite desktop remoto, ho visto esattamente i risultati che volevo.

Ovviamente mi piacerebbe che le cose funzionino correttamente su entrambi i computer, ma attualmente sono perplesso sul motivo per cui non lo sono. Ogni computer esegue Windows 7, Eclipse v3.6.

Quale potrebbe essere il problema che causa questa incoerenza? E se la mia soluzione è semplicemente assurda e mi manca completamente un modo più semplice, in che modo? Grazie per tutto l'aiuto!

+0

Forse le due macchine stanno tentando di anti-alias due diversi tipi di carattere? – MusiGenesis

+0

Entrambi dovrebbero usare il carattere "Tahoma". – Dylan

+0

La mia ipotesi sarebbe che è a causa delle differenze tra le schede grafiche nelle due macchine. SWT utilizza le funzionalità native del sistema operativo, che includono tutti i vantaggi hardware utilizzati dal sistema operativo. Quindi cercherò di scambiare la scheda grafica al lavoro, se possibile. Forse anche esaminare i livelli di patch di ogni macchina, anche se entrambi usano Windows 7. –

risposta

0

Se non riesci a farlo funzionare in SWT, forse potresti provare a renderizzare un'immagine di Swing e copiare i pixel risultanti.