绘图、图像和动画【总结】

本文介绍了如何在Java中进行图形绘制,包括使用Graphics对象进行基本绘图操作,如画花,以及通过drawString方法显示文字。此外,还讨论了如何使用Font类创建自定义字体效果。对于图像显示,文章指出通常从文件中加载二进制图像,并利用drawImage方法在屏幕上呈现。最后,解释了Java实现动画的基本原理,即通过连续显示和擦除一系列图像来创造出动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 绘制图形?

答:对于一个一个GUI组件,可用getGraphics获得一个Graphics对象,它相当于组件的绘图环境,利用它可以进行各种绘图操作。例如,用鼠标单击画图:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class SimpleMouseWidthVector extends Applet{
	private java.util.Vector points = new java.util.Vector();
	
	public void init() {
		addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				points.add(new Point(e.getX(),e.getY()));
				repaint();
			}
		});
	}
	public void update(Graphics g) {
		paint(g);
	}
	public void paint(Graphics g) {
		for (int i = 0; i < points.size(); i++) {
			Point p=(Point)points.elementAt(i);
			g.drawString("x", p.x, p.x);
		}
	}
	public static void main(String[] args) {
		Frame frame = new Frame("MouseClick");
		SimpleMouseWidthVector p = new SimpleMouseWidthVector();
		
		p.init();
		p.start();
		
		frame.add("Center", p);
		frame.setSize(400, 300);
		frame.setVisible(true);
	}
}

画一朵亮花:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Draw_r_cos2th extends Applet{
	public void paint(Graphics g) {
		double w=getSize().width/2;
		double h=getSize().height/2;
		g.setColor(Color.blue);
		for( double i = 0; i < 10; i+=0.003) {
			double r = Math.cos(16*i)*h;
			double x = r * Math.cos(i) + w;
			double y = r * Math.sin(i) + h;
			g.drawOval((int)x-1, (int)y-1, 3, 3);
		}
	}
	public static void main(String[] args) {
		Frame f = new Frame("Draw");
		Draw_r_cos2th p = new Draw_r_cos2th();
		p.init();
		p.start();
		f.add(p);
		f.setSize(400, 300);
		f.show();
	}
}


2. 显示文字?

答:Graphics类的方法drawString()可以在屏幕指定位置显示一个字符串,另外还有一个类Font,它有更加丰富多彩和避震精确的字体显示效果,包含字体类型、字号和颜色。例如,显示全部字体的名字,类型为PLAIN,字号为17,颜色为蓝色:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class DrawFonts extends Applet{
	public void paint(Graphics g) {
		g.setColor(Color.BLUE);
		GraphicsEnvironment ge = GraphicsEnvironment.
				getLocalGraphicsEnvironment();
		Font[] fonts = ge.getAllFonts();
		for (int i = 0; i < fonts.length; i++) {
			String name = fonts[i].getName();
			g.setFont(new Font(name, Font.PLAIN ,17));
			g.drawString(name, 50, 20*i);
		}
	}
	public static void main(String[] args) {
		Frame f = new Frame("Drawing");
		DrawFonts p = new  DrawFonts();
		p.init();
		p.start();
		f.add(p);
		f.setSize(400, 300);
		f.show();
	}
}


3. 显示图形和及实现动画?

答:由于图像的数据量要远远大于图形,所以一般不在程序中自行绘制图像,而是把已经存在于本机硬盘或网络某地的二进制图像文件直接调入内存。

Java中可用Graphics类的drawImage()方法显示图像。

用Java实现动画的原理和放映动画片类似,取若干图像或图片,顺序、连续地在屏幕上先显示,后擦除,循环往复就可以获得动画的效果。

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;

public class DrawImageAnimator extends Frame{
	private Image[] images;
	private int curImages;
	private boolean bStop;
	private MyThread thread;
	
	public DrawImageAnimator(String s) {
		super(s);
		final String dir = "图像组路径";
		String[] files = new File(dir).list();
		int num = files.length<=10?files.length:10;
		images = new Image[num];
		for( int i = 0; i < num; i++) {
			images[i] = Toolkit.getDefaultToolkit().createImage(
					dir+"\\"+files[i]);
		}
		setSize(400, 700);
		show();
		
		thread = new MyThread();
		thread.start();
	}
	
	public void paint(Graphics g) {
		g.drawImage(images[curImages], 0, 0, this);
	}
	
	class MyThread extends Thread{
		public void run() {
			while(!bStop) {
				repaint();
				try {
					sleep(1000);
				}catch (InterruptedException e) {}
				curImages++;
				if(curImages==images.length)
					curImages=0;
			}
		}
	}
	
	public static void main(String[] args) {
		Object f = new DrawImageAnimator("DrawImageAnimator");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值