0
Ich zeichne Grafiken im Rahmen mit dieser Methode.Möglichkeit, die Transparenz mit Java Swing zu ändern.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();
}
Ich möchte selectedImage als Transparenz 50% oder andere Ganzzahl haben.
private Image selectedImage = new ImageIcon(Main.class.getResource("../pic/something.jpg")).getImage();
dies ist selectedImage, und es funktioniert gut.
ändern 'Graphics2D g = img.createGraphics(); g.drawImage (selectedImage, 0, 0, null); 'zu' Graphics2D g = img.createGraphics(); Zusammengesetztes c = AlphaComposite.getInstance ( AlphaComposite.SRC_ATOP, .5f); g.setComposite (c); g.drawImage (selectedImage, 0, 0, null); 'und der Job ist erledigt! –
@AndrewThompson Ordentlich, ich war sicher, es gab eine Möglichkeit, die Zeichnung zu ändern, war aber nicht sicher, was zu verwenden ist. Wenn ich mich richtig erinnere, ist 'JFrame.paint (Graphics)' eigentlich ein 'Graphics2D'-Objekt, auf das das Composite temporär angewendet werden könnte? – phflack
Ja, solange die 'Graphics' in ein' Graphics2D' Objekt umgewandelt oder auf andere Weise erzeugt werden. Aber ändern Sie nicht die Malmethoden von Top-Level-Containern. Mache eine benutzerdefinierte Malerei in einem 'JPanel', –