1

SWT 4.2Treeウィジェットを使用しています。リスト内のそれぞれにカラーコードを関連付ける必要がありTreeItemます。TreeItem次のsetImage(...)ように作成された画像でを使用してこれを行っています。

private Image createImage(int imageSize)
{
    Image image = new Image(Display.getDefault(), imageSize, imageSize);
    GC gc = new GC(image);
    gc.setAntialias(SWT.ON);
    gc.setBackground(... a Color object ...);
    gc.fillRoundRectangle(0, 0, imageSize, imageSize, 5, 5);
    gc.dispose();
    return image;
}

1 つの詳細を除いて、これは実際にうまく機能します。角の丸い四角形の外側の角は透明ではなく、白のままです。効果は、白いフリンジが付いた丸みを帯びたカラー スクエアです。これは、ユーザーが で項目を選択するときに特に顕著Treeです。選択色によって白い角がはっきりと見えるからです。

そのメソッドのドキュメントには、「透明ピクセルをマップする色を設定します」Image.setBackground(...)と記載されているため、を作成する前に使用してみました。ただし、色を白または画像が設定されている場所の色(とにかく白)に設定しても、私が見る限り効果はありません。また、上記のコードで のアルファ値を設定しようとしましたが、GC の背景を透明に設定するための正しい呪文を取得できないようですが、塗りつぶされた四角形は透明ではありません。GCTreeItemGC

私は何を間違っていますか?塗りつぶされた四角形の外側の領域を透明にして、塗りつぶされた角丸長方形の外側の画像の角がTreeリストに表示されたときに適切に透明になるようにするにはどうすればよいですか?

4

1 に答える 1

1

多くの写真編集ツールで実行できる「カラーからアルファ/透明度」のようなことができます。

詳細が必要な場合は、この記事をお読みください: SWT 画像を見てください。

このようなものが動作するはずです:

ImageData data = yourImage.getImageData();
// Assuming the corners are white
int whitePixel = data.palette.getPixel(new RGB(255,255,255));
data.transparentPixel = whitePixel;
Image transparentImageCorners = new Image(display, data);

これが描画する画像に含まれる色に影響するのではないかと心配な場合は、最初に、画像に含まれていないことがわかっている明確な色で背景を着色します。

于 2013-03-06T10:04:36.493 に答える