2013-05-07 5 views
9

나는 Graphics2D 개체를 가지고 있으며 개체의 배경을 설정하려고합니다. Color 매개 변수가있는 setBackground 메서드가 있습니다. 이 방법으로 배경색을 설정할 수 있습니다.Java Graphics2D 투명한 배경

내 질문은 : 어떻게 개체의 배경 투명도를 설정할 수 있습니까? 어떻게 든 투명하게 말할 수 있습니까? 어떻게 든 완전히 불투명하다고 말할 수 있습니까? 어떻게 든 투명도/불투명도가 0.8이라고 말할 수 있습니까? 이 값들을 어떻게 설정할 수 있습니까?

TRANSLUCENTOPAQUE이라는 미리 정의 된 값이 있음을 확인했지만 어떻게 사용할 수 있는지 잘 모르겠습니다.

아마도 올바른 사용법은 int 매개 변수를 사용하여 Color의 생성자를 호출하는 것일 수 있습니다.

+2

색상은 r, g, b, a의 네 가지 매개 변수를 취합니다. a는 설정하려는 알파 또는 투명도 구성 요소입니다. –

+0

r = 0, g = 0, b = 0으로 설정하면 흰색으로 배경이 생성되지만 a = 1로 설정하면 투명으로 표시됩니다. – user2277872

+2

예, 이제 알 수 있습니다. 어떻게 "a"를 정의 할 수 있습니까? 0과 255 사이의 값, 0은 불투명, 255는 투명 함을 의미합니까? –

답변

14

투명도를 지정하여 Color 객체를 구성 할 수 있습니다. 예를 들어, 다음 코드는 50 % 투명도의 빨간색 색상을 구성합니다.

Color c=new Color(1f,0f,0f,.5f); 
+1

그리고 어떻게 Graphics2D의 배경을 설정할 수 있습니까? setBackground 함수가 있지만 배경을 설정하지 않습니다. generator.setBackground (Settings.canvasColor). Settings.canvasColor는 Color.BLUE이지만 캔버스는 여전히 하루 종일 흰색입니다. –

+4

Graphics2D 객체의 배경을 색상으로 설정하는 좋은 해결책을 보지 못했지만 (그 방법은 있습니다 만 그 방법은 아무런 효과가 없습니다), 그래서 주어진 색상으로 사각형을 그렸습니다 캔버스를 채우기 위해. –

+0

@Lajos : ... 즉 :'#setColor()'+'#fillRect()'right? – Campa

3

다음과 같은 방법으로 색의 생성자를 호출 할 수 있습니다 : A는 알파 (투명도) 값입니다

Color c = new Color(r,g,b,a); 

합니다.

모든 자바 클래스와 마찬가지로 공식 API에서이 정보를 찾을 수 있습니다 : http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

그것은 정말 좋은 자원 그리고 당신은 여기에 대답을 기다리고 절약 할 수 있습니다.

2

자바는 실제로이 물건에 꽤 능숙합니다. 투명도를 훨씬 높일 수 있습니다. 자세한 내용은

package misc; 

import java.awt.*; 
import javax.swing.*; 
import static java.awt.GraphicsDevice.WindowTranslucency.*; 

public class TranslucentWindowDemo extends JFrame { 
    public TranslucentWindowDemo() { 
     super("TranslucentWindow"); 
     setLayout(new GridBagLayout()); 

     setSize(300,200); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     //Add a sample button. 
     add(new JButton("I am a Button")); 
    } 

    public static void main(String[] args) { 
     // Determine if the GraphicsDevice supports translucency. 
     GraphicsEnvironment ge = 
      GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     GraphicsDevice gd = ge.getDefaultScreenDevice(); 

     //If translucent windows aren't supported, exit. 
     if (!gd.isWindowTranslucencySupported(TRANSLUCENT)) { 
      System.err.println(
       "Translucency is not supported"); 
       System.exit(0); 
     } 

     JFrame.setDefaultLookAndFeelDecorated(true); 

     // Create the GUI on the event-dispatching thread 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       TranslucentWindowDemo tw = new TranslucentWindowDemo(); 

       // Set the window to 55% opaque (45% translucent). 
       tw.setOpacity(0.55f); 

       // Display the window. 
       tw.setVisible(true); 
      } 
     }); 
    } 
} 

here : 다음은 간단한 투명 창 오라클에서 I copied에 대한 몇 가지 코드입니다.

+1

JFrame이 아닌 Graphics2D 객체를 사용하고 있습니다. –

0

JPanel을 사용하는 경우이 방법을 사용할 수 있습니다. jPanel1.setOpaque (false);