2014-02-17 5 views
0

사용자 지정 컨트롤에서 선택 기능을 구현하려고합니다. 이 컨트롤에는 이미지가 포함되어 있으며 이미지를 선택하면 푸른 빛을냅니다. 비트 단위로 이미지를 변경하고 싶지 않습니다.SWT 컨트롤이나 컨트롤을 투명 레이어로 덮는 방법은 무엇입니까?

다른 컨트롤보다 반투명 한 파란색 사각형을 그리면 선택을 시뮬레이션 할 수 있습니까?

UPDATE

다음 코드는 더 어떤 도면 보여줍니다 : Opal

에서 오버레이가

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); 
    } 




} 
+1

가장 좋은 옵션은'SWT.Paint'를 듣고 ['GC'] (http://help.eclipse.org/indigo/nftopic/org.eclipse.platform)로'Image'를 그립니다. .doc.isv/reference/api/org/eclipse/swt/graphics/GC.html) 그리고 위에'GC# setAlpha (int)'를 사용하여 반투명 사각형을 그린다. 자세한 내용은 [this] (http://eclipse.org/articles/Article-SWT-graphics/SWT_graphics.html)을 참조하십시오. – Baz

+0

복합 재료를 그릴 방법은 무엇입니까? 내 그림이 복합체를 구성하는 다른 컨트롤 아래에 나타나는 것 같습니다. –

+1

부모 'Composite'가 아닌 이미지를 담고있는'Label'에 리스너를 추가해야합니다. – Baz

답변

0

투명성 SWT와 어려운 주제입니다 ... 또는 다음을 살펴보십시오. Appkit

나는 오팔 (opal)의 오버레이 (overlay)와 함께 가서 여분의 기능을하기 위해 그것을 확장했다.