【问题标题】:Should i use null for the ImageObserver parameter of the Graphics.drawImage() function?我应该对 Graphics.drawImage() 函数的 ImageObserver 参数使用 null 吗?
【发布时间】:2012-05-20 06:57:04
【问题描述】:

我有以下变量:Image avatar;URL url;

在构造函数中,我设置:

this.url = new URL("http://www.robottiger.com/user.PNG");

this.avatar = ImageIO.read(url);

然后在..

public void paint (Graphics g)

..下面这样用对吗?

g.drawImage(avatar, 20, 410, null);

还是应该将null 改为this

【问题讨论】:

  • 只是一个建议,不要覆盖你的 paint(...) 方法,如果你使用 Swing,对于这样的任务,覆盖 paintComponent(...) 代替,两者都可以,尽管它们用于不同的东西,不知道那么多细节,否则我会发布我的答案:-)

标签: java image graphics awt drawimage


【解决方案1】:

第四个参数是观察者,当更多图像被转换时被通知的对象。它可以完全为 null,假设它仅在您异步获取 Image 参数时才有用。

【讨论】:

    【解决方案2】:

    drawImage() 所指的构造函数如下:

    public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer)
    

    第四个参数只是图像观察者,即object to be notified as more of the image is converted.,所以它可以为空。

    【讨论】:

      【解决方案3】:

      相对于其他两个回复,我建议如果你有ImageObserver使用它,不要假设图片是否同步加载(例如ImageIO.read(URL)),异步加载(例如Toolkit.createImage(URL))或在内存中生成。

      【讨论】:

        【解决方案4】:

        如果您通过网络加载Image(不是从文件系统,或由程序构造)并且没有显式等待加载,您需要使用ImageObserver 以确保完全绘制@987654323 @。除此之外 - 只需使用 null。应该没问题的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-27
          • 2021-08-26
          • 2020-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多