大家好,小弟刚学java,什么都不懂,弱弱的问一下在Eclipse里怎么实现画图,如两点之间的直线,曲线等等

解决方案 »

  1.   

    你自己可以看API啊package com.ouyangyh.util.code;import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.geom.AffineTransform;
    import java.awt.image.BufferedImage;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;/**
     * 取得验证码
     * @author 欧阳勇华
     *
     */
    public class ValidateCode {
    /**
     * 取得验证码图像
     * @param str 验证码
     * @param bgColor 背景色
     * @param font 字体
       * @param maxAngle 最大旋转角度(度)
     * @return 图像
     */
    public static BufferedImage getImage(String str,int maxAngle,Color bgColor,Font font){
    int pHeight=(int)(font.getSize()*1.25);
    int pWidth=(int)(pHeight*0.8);
    BufferedImage bi=new BufferedImage(pWidth*str.length(),pHeight,BufferedImage.TYPE_INT_BGR);
    Graphics2D grap=bi.createGraphics();
    grap.setFont(font);
    grap.setColor(Color.WHITE);
    grap.fillRect(0, 0, bi.getWidth(), bi.getHeight());
    grap.setColor(Color.RED);
    for(int i=0;i<str.length();i++)
    grap.drawImage(getImage(str.charAt(i),maxAngle,bgColor,font),new AffineTransform(1f,0f,0f,1f,i*pWidth,0), null);
    bi.flush();
    return bi;
    }
    /**
     * 取得单个字符的图像
     * @param c 字符
     * @param bgColor 背景色
     * @param font 字体
     * @param maxAngle 最大旋转角度(度)
     * @return 图像
     */
    public static BufferedImage getImage(char c,int maxAngle,Color bgColor,Font font){
    //设置尺寸
    int pHeight=(int)(font.getSize()*1.25);
    int pWidth=(int)(pHeight*0.8);
    //实例化对象
    BufferedImage bi=new BufferedImage(pWidth,pHeight,BufferedImage.TYPE_INT_BGR);
    Graphics2D grap=bi.createGraphics();
    grap.setFont(font);
    grap.setColor(bgColor);
    //画图
    grap.fillRect(0, 0, bi.getWidth(), bi.getHeight());
    //旋转
    grap.rotate(randomAngle(maxAngle),pWidth/2,pHeight/2);
    grap.setColor(randomColor(bgColor));
    grap.drawString(Character.toString(c), 5,pWidth);
    bi.flush();
    return bi;
    }
    /**
     * 取得随机角度
     * @param maxAngle 角度
     * @return
     */
    private static double randomAngle(int maxAngle){
    double angle= (Math.random()*2*maxAngle-maxAngle)/180*Math.PI;
    System.out.println(angle);
    return angle;
    }

    /**
     * 取得随机颜色(内置颜色)
     * @param bgColor 背景色(将不产生该色)
     * @return 随机色
     */
    public static Color randomColor(Color bgColor){
    Color[] colors={
    Color.BLACK,
    Color.BLUE,
    Color.CYAN,
    Color.GRAY,
    Color.GREEN,
    Color.MAGENTA,
    Color.ORANGE,
    Color.PINK,
    Color.RED,
    Color.WHITE,
    Color.YELLOW};
    //取得颜色
    return randomColor(bgColor,colors);
    }
    /**
     * 取得随机颜色(颜色数组中取值)
     * @param bgColor 背景色(将不产生该色)
     * @param colors 颜色数组
     * @return 随机色
     */
    public static Color randomColor(Color bgColor,Color[] colors){
    Color color=bgColor;
    while(color.equals(bgColor)){
    color=colors[(int)(Math.random()*colors.length)];
    }
    return color;
    }
    /**
     * 产生指定个数的随机数字符串
     * @param count 个数
     * @return 字符串
     */
    public static String randomNumber(int count){
    char[] result=new char[count];
    for (int i = 0; i < result.length; i++) {
    result[i]=(char)('0'+Math.random()*10);
    }
    return new String(result);
    }
    /**
     * 将图像写入文件
     * @param image 图像
     * @param fileName 文件名
     */
    public static void write(BufferedImage image,String fileName){
    try{
    BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(fileName));
    JPEGImageEncoder jpg=JPEGCodec.createJPEGEncoder(out);
    jpg.encode(image);
    out.flush();
    out.close();
    }catch(Exception e){ }
    File file=new File(fileName);
    System.out.println(file.getAbsolutePath());
    }

    public static void main(String[] args) throws Exception{
    String code=ValidateCode.randomNumber(5);
    BufferedImage image=ValidateCode.getImage(code,45,Color.WHITE,new Font("宋体",Font.PLAIN,25));
    write(image, "code.jpg");
    }
    }
      

  2.   

    需要重写paintComonent方法:package 图形程序设计;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.geom.*;
    class DrawFrame extends JFrame{
    public DrawFrame(){
    setTitle("DrawTest");
    }
    }
    class DrawComponent extends JComponent{
    public void paintComonent(Graphics g){
    Graphics2D g2=(Graphics2D)g;
    double leftX=100;
    double topY=100;
    double width=200;
    double height=150;

    Rectangle2D rect=new Rectangle2D.Double(leftX,topY,width,height);
    g2.draw(rect);

    Ellipse2D ellipse=new Ellipse2D.Double();
    ellipse.setFrame(rect);
    g2.draw(ellipse);

    g2.draw(new Line2D.Double(leftX,topY,leftX+width,topY+height));

    double centerX=rect.getCenterX();
    double centerY=rect.getCenterY();
    double radius=150;

    Ellipse2D circle=new Ellipse2D.Double();
    circle.setFrameFromCenter(centerX, centerY,centerX+radius,centerY+radius);
    g2.draw(circle);
    }
    }
      

  3.   

    Java Api 包中有画图的工具 java.awt 那个包中!
      

  4.   

    都什么时代了, 还用 java 画图, 你瞧swing界面丑陋. 调查一下现在还有谁用 java,swing去做窗体.
      

  5.   

    请问一下,在java中用什么做界面好?我真不知道啊。
      

  6.   

    我的建议就是画图就不要考虑用JAVA了