簡體   English   中英

如何在圖像圖標上繪制黑色矩形?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM