6

今のところ、私の目標は、ラベルにアンチエイリアステキストを表示することです。私の調査が正しければ、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;

2台の異なるコンピューターで一貫性のない結果が得られました。職場では、結果の画像のテキストが、テキストのアンチエイリアシングがオンになっていないかのように途切れ途切れに見えます。しかし、自宅では、リモートデスクトップを介して仕事用のコンピューターに接続しているので、希望どおりの結果が得られました。

もちろん、両方のコンピューターで正しく動作するようにしたいのですが、現在、正しく動作しない理由について困惑しています。各コンピューターはWindows7、Eclipsev3.6を実行しています。

この不整合を引き起こしている問題は何でしょうか?そして、私の回避策がばかげていて、もっと簡単な方法を完全に見逃している場合、その方法は何ですか?助けてくれてありがとう!

4

2 に答える 2

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

于 2011-05-17T15:01:35.817 に答える
0

SWTで機能させることができない場合は、Swingイメージにレンダリングして、結果のピクセルをコピーしてみてください。

于 2011-05-17T08:40:11.877 に答える