Im Moment ist mein Ziel, Anti-Aliased Text auf meinen Etiketten zu haben. Wenn meine Forschungsergebnisse korrekt waren, unterstützen SWT-Labels nativ kein Anti-Aliasing für Text. Mein aktueller Workaround-Versuch besteht also darin, ein Bild zu erstellen, Text-Anti-Aliasing einzuschalten, meinen Text zu diesem Bild zu zeichnen und dann dem Label zu geben .Warum funktioniert kein Text-Anti-Aliasing, während mit SWT GC Text gezeichnet wird?
Mein aktuelles Bild Zeichencode ist wie folgt:
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;
ich inkonsistente Ergebnisse auf zwei verschiedenen Computern gehabt haben: Bei der Arbeit, der Text in den resultierenden Bildern erscheint als abgehackt wie sich ständig, als ob Text Anti -aliasing war nicht einmal an. Aber zu Hause, verbunden mit meinem Arbeitscomputer über den Remote-Desktop, sah ich genau die Ergebnisse, die ich wollte.
Offensichtlich möchte ich Dinge auf beiden Computern richtig funktionieren, aber ich bin derzeit ratlos, warum sie nicht sind. Auf jedem Computer läuft Windows 7, Eclipse v3.6.
Was könnte das Problem sein, das diese Inkonsistenz verursacht? Und wenn meine Umgehungslösung nur absurd ist und mir ein einfacherer Weg komplett fehlt, was ist das? Danke für jede Hilfe!
Vielleicht sind die beiden Maschinen versuchen, zu Anti-Aliasing zwei verschiedene Schriftarten? – MusiGenesis
Sie sollten beide die Schriftart "Tahoma" verwenden. – Dylan
Meine Vermutung ist, dass es wegen der Unterschiede zwischen den Grafikkarten in den zwei Maschinen ist. SWT verwendet die nativen Funktionen des Betriebssystems, einschließlich aller Hardware-Vorteile, die vom Betriebssystem verwendet werden. Ich würde also versuchen, wenn möglich, die Grafikkarte bei der Arbeit auszutauschen. Vielleicht sogar in die Patch-Ebenen jeder Maschine, obwohl beide Windows 7 verwenden. –