JAVA Graphics类中drawImage方法怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA Graphics类中drawImage方法怎么用相关的知识,希望对你有一定的参考价值。

drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)

最后一个参数是填什么东西,不懂,API文档写的不清楚

1、先在eclipse中创建一个java工程文件,命名为UseFunction。

2、然后在src下创建demo包,在demo下创建MyClass类。

3、接着在MyClass类中创建一个函数。函数内容很简单,只是输出一条语句。

4、接着就是要在main函数中调用上一步创建的函数。

5、编辑好MyClass.java文件后,通过java应用程序的方式运行MyClass.java。

6、运行后,可以在控制台中看到输出了一条语句,说明成功调用了函数。

参考技术A

  Graphics有六个drawImage方法,我们用的最多的是  public abstract boolean drawImage(Image img, int x, int y,int width, int height,ImageObserver observer);

  img是要加载的图像,x,y是指定绘制图像矩形左上角的位置,width是指定绘制图像矩形的宽,width是指定绘制图像矩形的高,observer是要绘制图像的容器。

  因为Graphics是一个抽象类,所以我们一般是重写其它容器的paint方法,例如JPanel或者JFrame等。下面是一个具体的例子:

package konw.win;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
class MyGraphics extends JPanel

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    public void paint(Graphics g)
    
        Toolkit tool = this.getToolkit();
        Image image = tool.getImage("image.jpg");
        g.drawImage(image, 10, 10, image.getWidth(this),image.getHeight(this), this);
    

public class WinDrawImageTest

    public static void main(String[] args)
    
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.add(new MyGraphics());
        
        frame.setVisible(true);
    

参考技术B 最后一个添null就可以了,那是用来检测图片改变的“图片观察者”,实际中基本用不到。因为这个观察者类在java设计中有严重缺陷,会导致图片绘制不及时,所以图片更新的工作往往都是由开发者自己来做。本回答被提问者采纳 参考技术C drawImage你知道是画图了。准确地说,这个是异步画图(就是说,不同步),执行了之后,画图了,但是以后可能会有新的部分需要画(动画图的第二帧或者第一次只画一半),那么,当新的部分被画的时候,很可能是在另一个线程里画的,不是你调用drawImage的这个线程。
那么,你很可能会想得到“有新部分被画了”这个事件。ImageObserver 就是这类事件的一种接收器。只要是实现了ImageObserver这个接口的Object传进去就行了。具体的ImageObserver的imageUpdate方法,你可以直接刷新它的容器(因为容器内的图刷新了嘛,所以需要刷新容器的样子吧)。如果你肯定图是稳定的(好像BufferedImage就是)能一次画完的,可以直接传入null,表示不给它ImageObserver,不监听“有新部分被画了”这个事件
参考技术D 一般都填this

以上是关于JAVA Graphics类中drawImage方法怎么用的主要内容,如果未能解决你的问题,请参考以下文章

GDI+ Graphics::DrawImage 不显示

我应该使用哪个 Gdiplus::Graphics::DrawImage 函数?

手记解决Graphics.DrawImage带ImageAttributes在XP报内存不足的问题

java drawImage 如何实现旋转和缩放

关于Jpanel中g.drawImage函数bug调试。。。

关于Jpanel中g.drawImage函数bug调试。。。