半透明組件在更新其內容時可能會帶來重繪挑戰,從而導致不吸引人的視覺效果。本文探討了涉及 AlphaComposite 的解決方案,並提供了實作此解決方案的程式碼範例。
AlphaComposite 允許操縱圖形如何合成到框架上。透過設定適當的規則,可以控制渲染元素的透明度。
一種方法是擴展 JLabel 並實作 Icon。這樣就可以建立可以顯示文字的半透明元件。
要使整個框架半透明,請調整框架的背景顏色以具有透明組件。不過,要注意的是,這也會影響內容的不透明度。
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JLabel; public class TranslucentJLabel extends JLabel { public TranslucentJLabel() { setOpaque(false); setBackground(new Color(0f, 0f, 0f, 0.5f)); setFont(new Font("Serif", Font.PLAIN, 48)); } @Override protected void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.SrcOver); super.paintComponent(g2d); } }
import java.awt.AlphaComposite; import java.awt.Color; import javax.swing.JFrame; public class TranslucentFrame extends JFrame { public TranslucentFrame() { setBackground(new Color(0f, 0f, 0f, 0.7f)); setUndecorated(true); setSize(300, 200); setLocationRelativeTo(null); setVisible(true); } @Override public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.SrcOver); super.paint(g2d); } }
透過實作這些技術,您可以建立具有有效重繪行為的半透明框架和元件。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3