-3
我試圖做這個改變繪製串的字母:圖形 - 如何使繪製的字符串透明?
g2d.drawString("HelloWorld", 50, 50, alphaValue);
這導致編譯錯誤。
所有我想要做的是使繪製的字符串慢慢變成透明。
我試圖做這個改變繪製串的字母:圖形 - 如何使繪製的字符串透明?
g2d.drawString("HelloWorld", 50, 50, alphaValue);
這導致編譯錯誤。
所有我想要做的是使繪製的字符串慢慢變成透明。
您需要設置顏色
Color curr = g2d.getColor();
// Color curr = Color.GREEN;
g2d.setColor(new Color(curr.getRed(), curr.getGreen(), curr.getBlue(), alphaValue));
g2d.drawString("HelloWorld", 50, 50);
正如謝爾蓋說,你需要改變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();
}
});
}
}
變量'alphaValue'被定義。看起來像'drawString()'沒有alpha值的字段。我不知道。 :c – Plistra
*「對不起,如果我在這篇文章中沒有達到要求,我非常疲倦,只想快速學習。:S」*睡一會兒,把問題留給自己。如果你在提問時覺得有必要提及這些事情,這是一個你不應該問的好兆頭。 –