用java swing.image改变透明度的方法 [英] Way to change transparency with java swing.image
本文介绍了用java swing.image改变透明度的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public void paint(Graphics g){
screenImage = createImage(1280,720);
screenGraphic = screenImage.getGraphics();
screenDraw((Graphics2D)screenGraphic);
//g.drawImage(BG,0,0,null);
g.drawImage(screenImage,0,0,null);
public void screenDraw(Graphics2D g){
g.drawImage(BG,0,0,null);
Graphics2D g2 =(Graphics2D)g;
if(isMainScreen){
//g2.setComposite (alphaComposite);
g2.drawImage(selectedImage,100,220,null);
}
paintComponents(g);
this.repaint();
}
我想让selectedImage成为透明度50%或其他整数。 p>
private Image selectedImage = new ImageIcon(Main.class.getResource(../ pic / something.jpg))。getImage( );
这是selectedImage,它运作良好。
解决方案
改编一下图像 - > BufferedImage 代码,然后你可以将每个像素设置为透明的
图像selectedImage = new ImageIcon([...])。getImage();
//图片 - > BufferedImage代码
BufferedImage img = new BufferedImage(selectedImage.getWidth(null),selectedImage.getHeight(null),BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
g.drawImage(selectedImage,0,0,null);
g.dispose();
//设置每个像素为透明
int transparency = 127; // 0-255,0不可见,255不透明
int colorMask = 0x00FFFFFF; // AARRGGBB
int alphaShift = 24;
for(int y = 0; y< img.getHeight(); y ++)
for(int x = 0; x< img.getWidth(); x ++)
img。 setRGB(x,y,(img.getRGB(x,y)& colorMask)|(transparency<< alphaShift));
// img现在是透明的,如果需要可以替换selectedImage(可选)
selectedImage = img;
如果您使用 ImageIO.read(File)
而不是 ImageIcon.getImage()
,它会直接给你一个 BufferedImage
I draw graphics in frame with this methods.
public void paint(Graphics g) {
screenImage = createImage(1280, 720);
screenGraphic = screenImage.getGraphics();
screenDraw((Graphics2D) screenGraphic);
//g.drawImage(BG, 0, 0, null);
g.drawImage(screenImage, 0, 0, null);
}
public void screenDraw(Graphics2D g) {
g.drawImage(BG, 0, 0, null);
Graphics2D g2 = (Graphics2D)g;
if(isMainScreen) {
//g2.setComposite(alphaComposite);
g2.drawImage(selectedImage, 100, 220, null);
}
paintComponents(g);
this.repaint();
}
I want to have selectedImage to be transparency 50% or other integer.
private Image selectedImage = new ImageIcon(Main.class.getResource("../pic/something.jpg")).getImage();
this is selectedImage, and it works well.
解决方案 Adapt a bit of Image -> BufferedImage code, and then you can set each pixel to be transparent
Image selectedImage = new ImageIcon([...]).getImage();
//Image -> BufferedImage code
BufferedImage img = new BufferedImage(selectedImage.getWidth(null), selectedImage.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
g.drawImage(selectedImage, 0, 0, null);
g.dispose();
//set each pixel to be transparent
int transparency = 127; //0-255, 0 is invisible, 255 is opaque
int colorMask = 0x00FFFFFF; //AARRGGBB
int alphaShift = 24;
for(int y = 0; y < img.getHeight(); y++)
for(int x = 0; x < img.getWidth(); x++)
img.setRGB(x, y, (img.getRGB(x, y) & colorMask) | (transparency << alphaShift));
//img is now transparent, can replace selectedImage if you want (optional)
selectedImage = img;
If you use ImageIO.read(File)
instead of ImageIcon.getImage()
, it will give you a BufferedImage
directly
这篇关于用java swing.image改变透明度的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文