2013-05-07 5 views
9

У меня есть объект Graphics2D, и я хочу настроить фон объекта. Он имеет метод setBackground, который имеет параметр цвета. Таким образом, я могу установить цвет фона.Java Graphics2D прозрачный фон

Мой вопрос: как я могу установить прозрачность фона объекта? Могу ли я как-то сказать, что он полностью прозрачен? Могу ли я как-то сказать, что это абсолютно непрозрачно? Могу ли я как-то сказать, что у него 0,8 прозрачность/непрозрачность? Как установить эти значения?

Я видел, что есть предопределенные значения int TRANSLUCENT и OPAQUE, но я не уверен, как их использовать.

Возможно, правильное использование - вызвать конструктор Color с параметром int?

+2

Цвет принимает четыре параметра r, g, b, a. a - это компонент Alpha или прозрачности, который вы хотите установить. –

+0

установка r = 0, g = 0, b = 0 приведет к тому, что фон будет белым, но сделав a = 1, станет прозрачным. – user2277872

+2

Да, я вижу это сейчас. Как определить «а»? Это значение от 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

Вы можете вызвать конструктор Color следующим образом:

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

где а значение альфа (прозрачность).

Как и со всеми классами Java, вы можете найти эту информацию в официальном API: http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Это действительно хороший ресурс и может избавить вас ждать ответа здесь.

2

Java на самом деле очень хорошо на этот материал, вы можете достичь прозрачности и многое другое. Вот код для простого прозрачного окна я copied от оракула:

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

Look here для получения дополнительной информации.

+1

Я использую объект Graphics2D, а не JFrame. –

0

Вы можете попробовать это, если используете JPanel: jPanel1.setOpaque (false);

Смежные вопросы