[英]how to draw a black rectangle over Image icon?
在我的應用程序中,我在背景中有一個交叉路圖片,我想在其頂部繪制交通信號燈(帶有3個圓圈的黑色矩形)問題是,我完全看不到矩形,就好像它在圖像下方或者其他的東西。 而且,如果我切換項目的繪制順序,則會得到全黑圖像。
您不知道該如何解決嗎?我是圖形新手,也搜索過類似的問題,但沒有一個幫助我。 謝謝。
public MainFrame() throws HeadlessException {
super("semafor");
crossroad = new ImageIcon("cross.png");
initFrame();
initComponents();
sem1 = new Semafor(true, 100, 100);
add(sem1);
repaint();
setVisible(true);
}
//here I paint the image
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(crossroad.getImage(), 0, 45, this);
}
//and in class Semafor i paint the actual traffic lights
@Override
public void paint(Graphics g) {
g.setColor(Color.black);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.darkGray);
//and then the circles
}
我要注意的第一件事是您正在調用<unknown>.getWidth()
和<unknown>.getHeight()
作為矩形大小。 如果它覆蓋了整個圖像,則表明它是從要繪制的面板上獲得該寬度和高度的。
一個簡單的堆棧跟蹤
(new Exception).printStackTrace();
要么
Thread.dumpStack();
會告訴你很多。 您還可以使用System.out
調用查詢寬度和高度,以驗證您是否正在獲取期望的值,或者,如果這確實失去了控制,請學習使用JUnit和assert
語句。 坦白說,看起來您只是在偶然地調用了錯誤的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.