Java-图像透明度与图形
我想为我的电子游戏中的一个角色创建淡入淡出效果。要做到这一点,我希望他们的形象是淡出和淡入。我想更改图像的不透明度,但不知道如何更改。我正在使用java图形。下面是一些代码Java-图像透明度与图形,java,transparency,Java,Transparency,我想为我的电子游戏中的一个角色创建淡入淡出效果。要做到这一点,我希望他们的形象是淡出和淡入。我想更改图像的不透明度,但不知道如何更改。我正在使用java图形。下面是一些代码 g.drawImage(joople, jx, jy, sx, sy, this); 我使用以下方法运行此代码: public void paint(Graphics g) { 非常感谢,, 橡木桶你会想看看 导入java.awt.AlphaComposite; 导入java.awt.Dimension; 导入java
g.drawImage(joople, jx, jy, sx, sy, this);
我使用以下方法运行此代码:
public void paint(Graphics g) {
非常感谢,,
橡木桶你会想看看
导入java.awt.AlphaComposite;
导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.image.buffereImage;
导入java.io.File;
导入java.io.IOException;
导入javax.imageio.imageio;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.Timer;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共类FadeMe{
公共静态void main(字符串[]args){
新的FadeMe();
}
公共FadeMe(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
例如printStackTrace();
}
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类TestPane扩展了JPanel{
专用缓冲图像img;
私有浮动alpha=0;
私人浮动增量=0.01f;
公共测试窗格(){
试一试{
img=图像读取(…);
计时器计时器=新计时器(40,新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
α+=δ;
如果(α>1.0){
α=1.0f;
δ*=-1.0f;
}否则如果(α<0.0){
α=0.0f;
δ*=-1.0f;
}
重新油漆();
}
});
timer.start();
}捕获(IOEX异常){
例如printStackTrace();
}
}
@凌驾
公共维度getPreferredSize(){
返回img!=null?新维度(img.getWidth(),img.getHeight()):新维度(200200);
}
@凌驾
受保护组件(图形g){
超级组件(g);
Graphics2D g2d=(Graphics2D)g.create();
g2d.setComposite(AlphaComposite.SrcOver.derive(alpha));
intx=(getWidth()-img.getWidth())/2;
int y=(getHeight()-img.getHeight())/2;
g2d.drawImage(img,x,y,this);
g2d.dispose();
}
}
}
这是一个简单而简短的过程,大多数开发人员使用java代码进行图像淡入淡出
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
*
* @author ADMIN
*/
public class ImageFade extends JFrame {
ImageFade() {
setLayout(null);
JLabel l = new JLabel();
l.setBounds(0, 0, 100, 96);
add(l);
Thread tp = new Thread() {
@Override
public void run() {
for (int amp = 0; amp <= 500; amp++) {
try {
sleep(1);
try {
BufferedImage bim = ImageIO.read(new File("src/image/fade/image.png"));
BufferedImage nbim = new BufferedImage(bim.getWidth(), bim.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D createGraphics = nbim.createGraphics();
createGraphics.drawImage(bim, null, 0, 0);
RescaleOp r = new RescaleOp(new float[]{1f, 1f, 1f, (float) amp / 500}, new float[]{0, 0, 0, 0}, null);
BufferedImage filter = r.filter(nbim, null);
l.setIcon(new ImageIcon(filter));
} catch (Exception ex) {
System.err.println(ex);
}
} catch (InterruptedException ex) {
}
}
}
};
tp.start();
setUndecorated(true);
setBackground(new Color(0, 0, 0, 0));
setSize(100, 96);
setVisible(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setAlwaysOnTop(true);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ImageFade fr = new ImageFade();
}
}
导入java.awt.Color;
导入java.awt.Graphics2D;
导入java.awt.image.buffereImage;
导入java.awt.image.RescaleOp;
导入java.io.File;
导入javax.imageio.imageio;
导入javax.swing.ImageIcon;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
/**
*
*@author-ADMIN
*/
公共类ImageFrame{
ImageFade(){
setLayout(空);
JLabel=新的JLabel();
l、 立根数(0,0,100,96);
加(l);
线程tp=新线程(){
@凌驾
公开募捐{
对于(int amp=0;amp)您将需要查看谢谢,我将查看它。从这段代码中,您的图像将比答案1的代码用户的图像更平滑地显示。
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
*
* @author ADMIN
*/
public class ImageFade extends JFrame {
ImageFade() {
setLayout(null);
JLabel l = new JLabel();
l.setBounds(0, 0, 100, 96);
add(l);
Thread tp = new Thread() {
@Override
public void run() {
for (int amp = 0; amp <= 500; amp++) {
try {
sleep(1);
try {
BufferedImage bim = ImageIO.read(new File("src/image/fade/image.png"));
BufferedImage nbim = new BufferedImage(bim.getWidth(), bim.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D createGraphics = nbim.createGraphics();
createGraphics.drawImage(bim, null, 0, 0);
RescaleOp r = new RescaleOp(new float[]{1f, 1f, 1f, (float) amp / 500}, new float[]{0, 0, 0, 0}, null);
BufferedImage filter = r.filter(nbim, null);
l.setIcon(new ImageIcon(filter));
} catch (Exception ex) {
System.err.println(ex);
}
} catch (InterruptedException ex) {
}
}
}
};
tp.start();
setUndecorated(true);
setBackground(new Color(0, 0, 0, 0));
setSize(100, 96);
setVisible(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setAlwaysOnTop(true);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ImageFade fr = new ImageFade();
}
}
Thread tp = new Thread() {
@Override
public void run() {
for (int amp = 0; amp <= 500; amp++) {
try {
sleep(1);
try {
BufferedImage bim = ImageIO.read(new File("src/image/fade/image.png"));
BufferedImage nbim = new BufferedImage(bim.getWidth(), bim.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D createGraphics = nbim.createGraphics();
createGraphics.drawImage(bim, null, 0, 0);
RescaleOp r = new RescaleOp(new float[]{1f, 1f, 1f, (float) amp / 500}, new float[]{0, 0, 0, 0}, null);
BufferedImage filter = r.filter(nbim, null);
l.setIcon(new ImageIcon(filter));
} catch (Exception ex) {
System.err.println(ex);
}
} catch (InterruptedException ex) {
}
}
}
};
tp.start();