Прозрачный фон Java Graphics2D
у меня есть Graphics2D
object и я хочу настроить фон объекта. У него есть setBackground
метод, который имеет параметр цвета. Таким образом я могу установить цвет фона.
мой вопрос: как я могу установить прозрачность фона объекта? Могу ли я каким-то образом сказать, что он полностью прозрачен? Могу ли я каким-то образом сказать, что он полностью непрозрачен? Могу ли я как-то сказать, что он имеет прозрачность/непрозрачность 0.8? Как установить эти значения?
Я видно, что есть int предопределенные значения, называемые TRANSLUCENT
и OPAQUE
, но я не уверен, как я могу их использовать.
может быть, правильное использование-вызвать конструктор цвета с параметром int?
5 ответов
вы можете создать объект цвета, указав прозрачность. Например, следующий код создает красный цвет с прозрачностью 50%
Color c=new Color(1f,0f,0f,.5f );
вы можете вызвать конструктор, цвета следующим образом:
Color c = new Color(r,g,b,a);
где a-значение альфа (прозрачность).
Как и во всех классах Java, вы можете найти эту информацию в официальном API:http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html
это действительно хороший ресурс и может избавить вас от ожидания ответа здесь.
Java на самом деле довольно хорош в этом, вы можете достичь прозрачности и многое другое. Вот код для простого прозрачного окна I скопировал из oracle:
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);
}
});
}
}
посмотреть здесь для получения дополнительной информации.
jPanel1.setBackground(new Color(0,0,0,200));
/*This will put a transparent black color on a panel, the important part of the code is: .setBackground(new Color(0,0,0,200));*/