2016-10-14 66 views
-3

我試圖做這個改變繪製串的字母:圖形 - 如何使繪製的字符串透明?

g2d.drawString("HelloWorld", 50, 50, alphaValue); 

這導致編譯錯誤。

所有我想要做的是使繪製的字符串慢慢變成透明。

+0

變量'alphaValue'被定義。看起來像'drawString()'沒有alpha值的字段。我不知道。 :c – Plistra

+1

*「對不起,如果我在這篇文章中沒有達到要求,我非常疲倦,只想快速學習。:S」*睡一會兒,把問題留給自己。如果你在提問時覺得有必要提及這些事情,這是一個你不應該問的好兆頭。 –

回答

3

您需要設置顏色

Color curr = g2d.getColor(); 
// Color curr = Color.GREEN; 
g2d.setColor(new Color(curr.getRed(), curr.getGreen(), curr.getBlue(), alphaValue)); 
g2d.drawString("HelloWorld", 50, 50); 
3

正如謝爾蓋說,你需要改變Color由圖形中使用阿爾法。

下面是一種可以淡出文本的方法。

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 
import javax.swing.Timer; 

public class ExampleFrame extends JFrame { 

    private JPanel drawPanel = new DrawPanel(); 
    private Timer timer; 
    private int alpha = 255; 
    private final int TIMER_TICK = 50; 
    private final int ALPHA_TICK_VALUE = 3; 

    private class DrawPanel extends JPanel { 

     final int PANEL_HEIGHT = 80; 
     final int PANEL_WIDTH = 100; 
     final int TEXT_MARGIN = 20; 

     DrawPanel() { 
      setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); 
     } 

     @Override 
     public void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      Color color = new Color(0, 0, 0, alpha); 
      g.setColor(color); 
      g.drawString("Hello World", TEXT_MARGIN, 
        PANEL_HEIGHT/2 + g.getFontMetrics().getHeight()/2); 
     } 

    } 

    public void createAndShow() { 
     getContentPane().add(drawPanel); 
     timer = new Timer(TIMER_TICK, new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       alpha -= ALPHA_TICK_VALUE; 
       if (alpha >= 0) { 
        drawPanel.repaint(); 
       } else { 
        alpha = 0; 
        timer.stop(); 
       } 
      } 
     }); 
     pack(); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
     timer.start(); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       ExampleFrame ef = new ExampleFrame(); 
       ef.createAndShow(); 
      } 
     }); 
    } 
}