Java基础入门 AWT绘图 绘制图片验证码

很多GUI程序都需要在组件上绘制图形,比如实现一个五子棋小游戏就需要在组件上绘制棋盘和棋子。在java.awt包中专门提供了一个Graphics类,它相当于一个抽象的画笔,其中其中提供了各种绘制图形的方法,使用Graphics类的方法就可以完成在组件上绘制图形。下面为Graphics的常用方法:

Graphics常用方法
方法声明方法描述
void setColor(Color c)将此图形上下文的当前颜色设置成指定颜色
void setFont(Font f)将此图形上下文的当前文字设置成指定文字
void drawLine(int x1,int y1,int x2,int y2)以(x1,y1)和(x2,y2)为端点绘制一条直线
void drawRect(int x,int y,int width,int height)绘制指定的矩形。矩形的左边缘和右边缘分别位于x,x+width,举行的上边缘和下边缘分别位于y,y+height
void drawOval(int x,int y,int width,int height)绘制指定的椭圆,它恰好能放进一个由x,y,width,height参数指定的矩形中,椭圆覆盖的区域宽度为width+1,长度为height+1
void fillRect(int x,int y,int width,int height)用当前颜色填充指定矩形,该矩形左边缘和右边缘分别位于x,x+width-1,上边缘和下边缘分别位于y,y+height-1
void fillOval(int x,int y,int width,int height)用当前颜色填充指定椭圆,该椭圆左边缘和右边缘分别位于x,x+width-1,上边缘和下边缘分别位于y,y+height-1
void drawString(String str,int x,int y)使用此图形上下文的颜色填充指定的文本str,最左侧字符左下角位于(x,y)坐标

下面是一个图片验证码的例子,代码如下:

import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class Main{
	public static void main(String[] args)throws Exception{
        final Frame f=new Frame("验证码");
        f.addWindowListener(new WindowAdapter(){//为窗口注册监听器,实现窗口关闭功能
        	public void windowClosing(WindowEvent e){
        		f.dispose();
        	}
        });
        final Panel p=new MyPanel();
        
        f.add(p);
        f.setSize(200, 100);
        f.setLocationRelativeTo(null);//将窗口f居中
        f.setVisible(true);
	}
}
class MyPanel extends Panel{
	public void paint(Graphics g){
		int width=160;
		int height=40;
		g.setColor(Color.LIGHT_GRAY);      //设置上下文颜色
		g.fillRect(0, 0, width, height);   //填充背景颜色
		g.setColor(Color.black);           //设置上下文颜色
		g.drawRect(0, 0, width-1, height-1);//绘制边框
		
		//绘制干扰点
		Random r=new Random();
		for(int i=0;i<100;i++){
			int x=r.nextInt(width)-2;
			int y=r.nextInt(height)-2;
			g.drawOval(x, y, 2, 2);
		}
		
		g.setFont(new Font("黑体",Font.BOLD,30));
		g.setColor(Color.BLUE);
		
		//产生随机数字
		char[] chars=("0123456789zxcvbnmasdfghjklpoiuytrewq"+"ZXCVBNMKJLHGFDSAQWERTYUIOP").toCharArray();
		StringBuilder sb=new StringBuilder();
		for(int i=0;i<4;i++){
			int pos=r.nextInt(chars.length);
			char c=chars[pos];
			sb.append(c+" ");
		}
		
		//写入随机验证码
		g.drawString(sb.toString(), 20, 30);
	}
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值