A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 630681386@qq.co 中级黑马   /  2014-1-12 08:28  /  873 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//1.设置图像的背景色
  setBackaground(g);
  //2.设置图像的边框
  setBorder(g);
  //3.在图像上画干扰线
  drawRandomLine(g);
  //4.在图像上写随机数
  drawRanderNum((Graphics2D)g);
这些方法都是自己写的,每个方法里面都有g.setColor(Color.RED);设置颜色的方法,程序是怎么知道我是想设置字体颜色,还是图像的颜色,还是边框,干扰线呢?

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

1 个回复

倒序浏览
  1. package com.response;

  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.image.BufferedImage;
  7. import java.io.IOException;
  8. import java.io.PrintWriter;
  9. import java.util.Random;

  10. import javax.imageio.ImageIO;
  11. import javax.servlet.ServletException;
  12. import javax.servlet.http.HttpServlet;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;

  15. public class Demo2 extends HttpServlet {

  16.         public static final int WIDTH=120;//设置图像的宽
  17.         public static final int HEIGHT=25;//设置图像的高
  18.         public void doGet(HttpServletRequest request, HttpServletResponse response)
  19.                         throws ServletException, IOException {
  20.         this.doPost(request, response);
  21.         }
  22.   //输出注册时候的随机图片
  23.         public void doPost(HttpServletRequest request, HttpServletResponse response)
  24.                         throws ServletException, IOException {
  25.                 //BufferedImage 可以自动生成图像,BufferedImage.TYPE_INT_RGB是图片的类型
  26.                 BufferedImage image=new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
  27.                 //得到这个图形
  28.                 Graphics g=image.getGraphics();
  29.                
  30.                 //1.设置图像的背景色
  31.                 setBackaground(g);
  32.                 //2.设置图像的边框
  33.                 setBorder(g);
  34.                 //3.在图像上画干扰线
  35.                 drawRandomLine(g);
  36.                 //4.在图像上写随机数
  37.                 drawRanderNum((Graphics2D)g);
  38.                 //5.把图像写给浏览器,设置浏览器打开文件的格式
  39.                 response.setContentType("image/jpeg");
  40.                 //发响应头控制浏览器不要缓存
  41.                 response.setDateHeader("expries", -1);
  42.                 response.setHeader("Cache-Control","no-cache");
  43.                 response.setHeader("Pragma","no-cache");
  44.                 ImageIO.write(image, "jpg", response.getOutputStream());

  45.         }
  46. private void drawRanderNum(Graphics2D g) {
  47.         g.setColor(Color.RED);//设置字的颜色为红色
  48.         g.setFont(new Font("宋体",Font.BOLD,20));//设置字体的样式,Font.BOLD为加粗,20字体的高度
  49.         int x=10;
  50.         for(int i=0;i<4;i++)
  51.         {
  52.                 int degree=new Random().nextInt()%30;//定义字符旋转多少度,%30是表示度数为-30到30度
  53.                 String shu=new Random().nextInt(10)+"";
  54.                 g.rotate(degree*Math.PI/180, x, 20);//设置旋转的弧度,后两个参数是基于那个点旋转
  55.                 g.drawString(shu , x, 20);//这是往图片上写入数字,参数是写入数字的坐标
  56.                 g.rotate(-degree*Math.PI/180, x, 20);//清掉上次的旋转,确保下次的旋转正确
  57.                 x=x+30;
  58.         }
  59.        
  60. }
  61. private void drawRandomLine(Graphics g) {
  62.         g.setColor(Color.GREEN);//设置干扰线的颜色
  63.         for(int i=0;i<5;i++)//i为干扰线的条数
  64.         {
  65.                 int x1=new Random().nextInt(WIDTH);//x1,y1为干扰线的起点的坐标,x坐标必须在图像的宽内,y坐标在高之内
  66.                 int y1=new Random().nextInt(HEIGHT);
  67.                
  68.                 int x2=new Random().nextInt(WIDTH);
  69.                 int y2=new Random().nextInt(HEIGHT);
  70.                 g.drawLine(x1, y1, x2, y2);//这个方法是画出干扰线
  71.         }
  72.        
  73. }
  74. private void setBorder(Graphics g) {
  75.         g.setColor(Color.BLUE);//?这里为什么只变的是边框
  76.         g.drawRect(1, 1, WIDTH-2, HEIGHT-2);
  77.                
  78.         }
  79. private void setBackaground(Graphics g) {
  80.         g.setColor(Color.WHITE);//设置图形的背景色为白色
  81.         g.fillRect(0, 0, WIDTH, HEIGHT);//填充矩形
  82.        
  83. }

  84. }
复制代码

代码刚忘记提交了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马