【问题标题】:how to draw a black rectangle over Image icon?如何在图像图标上绘制黑色矩形?
【发布时间】:2015-05-18 04:35:14
【问题描述】:

在我的应用程序中,我在背景中有一张十字路口图片,我想在其顶部绘制交通信号灯(带有 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
}

【问题讨论】:

    标签: java image graphics


    【解决方案1】:

    我注意到的第一件事是您调用<unknown>.getWidth()<unknown>.getHeight() 来获取矩形大小。如果它覆盖了整个图像,这表明它正在从正在绘制的面板获取宽度和高度。

    一个简单的堆栈跟踪,

    (new Exception).printStackTrace();
    

    Thread.dumpStack();
    

    会告诉你很多。您还可以使用System.out 调用来查询宽度和高度,以验证您是否获得了您期望的值,或者,如果这真的失控,请学习使用JUnit 和assert 语句。不过,老实说,看起来您只是不小心调用了错误的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-22
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2014-04-07
      • 2012-08-28
      相关资源
      最近更新 更多