1

我想在我的自定义控件中实现选择功能。此控件包含一个图像,我希望图像在选择时变为蓝色。我不想按位更改图像。

是否可以在其他控件上方绘制一些半透明的蓝色矩形来模拟选择?

更新

以下代码不显示任何绘图:

public class ImageWithCaption extends Composite {

    private Label imageLabel;
    private Label textLabel;

    private void init() {
        setLayout(new GridLayout(1, false));

        imageLabel = new Label(this, SWT.NONE);
        imageLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));

        textLabel = new Label(this, SWT.NONE);
        textLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));

        addPaintListener(new PaintListener() {

            @Override
            public void paintControl(PaintEvent e) {

                GC gc = e.gc;


                gc.setForeground(e.display.getSystemColor(SWT.COLOR_BLUE));
                gc.fillRectangle(0, 0, e.width, e.height);

            }
        });
    }

    public ImageWithCaption(Composite parent, int style) {
        super(parent, style);
        init();

    }

    public void setText(String text) {
        textLabel.setText(text);
    }

    public String getText() {
        return textLabel.getText();
    }

    public Image getImage() {
        return imageLabel.getImage();
    }

    public void setImage(Image image) {
        imageLabel.setImage(image);
    }




}
4

1 回答 1

0

透明度是 SWT 的一个难题......

Opal有一个叠加层

或者你可以看看Appkit

我自己使用了 Opal 的覆盖层并对其进行了扩展以获得一些额外的功能。

于 2014-06-21T16:50:57.903 回答