我一直在研究一個程序,該程序涉及透明窗體上部分透明圖像的旋轉。原本圖像的繪製工作得很好,我也將自定義面板的背景色設置爲透明淡藍色,這也很好。我嘗試旋轉圖像時出現問題。通過透明面板旋轉透明圖像
爲了旋轉它,我必須將panel.getGraphics()轉換爲Graphics2D。當我這樣做時,透明度就消失了,於是我完成了我的輪換代碼,然後閱讀了透明度。我發現我可以設置的Graphics2D的複合而這正是我所做的是在這裏看到:
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));
g2d.setColor(new Color(0, 0, 200, 90));
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
g2d.rotate(radians);
g2d.drawImage(img, 0, 0, null);
repaint();
}
當我運行此我得到的形式如下(請注意,這不是我的正常的圖像) :
這幾乎是我想除了它不顯示的透明藍色的背景是什麼。但是,如果我旋轉圖像的藍色顯示:
好,爲更好地幫助更快張貼[SSCCE(http://sscce.org/),短,可運行,編譯,否則這個問題是不應答的, – mKorbel 2013-02-25 09:08:22
1-不要使用panel.getGraphics。 2-確保您已將面板設置爲透明(setOpaque(false)),請記住,您現在負責以半透明的藍色填充組件的背景 – MadProgrammer 2013-02-25 09:10:09
不要調用repaint()in '的paintComponent()'。這是創造一個無限循環! – 2013-02-25 09:19:24