Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6628324
  • 博文数量: 227
  • 博客积分: 10047
  • 博客等级: 上将
  • 技术积分: 6678
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-11 10:33
个人简介

网上的蜘蛛

文章分类

全部博文(227)

文章存档

2010年(19)

2009年(29)

2008年(179)

分类: Java

2008-11-17 17:46:36

如果使用Graphics g.fillOval(int,int,int,int)这里只是简单支持int类型的数据。意思就说会忽略到小数部分,如果你要画的圆都在0~1内那么所有的都会被画成一个点啦~当然你也不必要为此自己去写一个函数来实现这个功能。看看Graphics2D为我们带来了什么~
 

public void drawCircle(Graphics g){
       Graphics2D g2=(Graphics2D)g;
       double diameter = 2*radius;
       Color ys=g.getColor();
       g.setColor(this.getColor());
       Ellipse2D circle=new Ellipse2D.Double();
       circle.setFrameFromCenter(pointX, pointY, pointX+radius, pointY+radius);
       ((Graphics2D) g).fill(circle);
      // g.fillOval(pointX-radius,pointY-radius,diameter,diameter);

   }
}

圆只是特殊的椭圆,我们设定好圆的中心以及a.b就可以完成圆的画法。更重要的是这里支持double类型的数据,以及不同的画法,fill()或者draw().使用起来也非常方便~

下面给出Graphics2D中其他图形的方法~

 

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

// 1. Graphics2D中绘制各种图形的方法

// 2. 矩形 椭圆 线 圆

// 3. GUI中组件 颜色 的设定


public class DrawTest {
  public static void main(String[] args)
     {
      EventQueue.invokeLater(new Runnable()//事件调度线程

      {
      public void run()
      {
       DrawFrame fram=new DrawFrame();
       fram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭

       fram.setVisible(true);//可见

      }
      });
     }

}
class DrawFrame extends JFrame
{
 public DrawFrame()
 {
  setTitle("DrawTest");
  setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
  //setBackground(Color.RED);//可用此方法设置组件背景色

  DrawComponent component=new DrawComponent();
  add(component);
  
 }
 public static final int DEFAULT_WIDTH=400;
 public static final int DEFAULT_HEIGHT=400;
}
class DrawComponent extends JComponent
{
 public void paintComponent(Graphics g)//自动获取一个Graphics2D类对象

 {
  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);//首先创建一实现了shape接口的类对象rect,然后调用Graphics2D的draw

               //另一方法--对角线

               //Rectangle2D rect=new Rectangle2D.Double();

              // rect.setFrameFromDiagonal(x1, y1, x2, y2);

               //亦有用中心的,rect.setFrameCenter

  
  //画 椭圆

  Ellipse2D ellipse=new Ellipse2D.Double();
  ellipse.setFrame(rect);//设置外接矩形

  g2.setPaint(Color.BLUE); //设置当前绘制颜色,Graphics2D的对象

                             //Color.blue可用new Color(int redness,int greenness,int blueness)

    
  g2.draw(ellipse);
  
  //画 对角线

  g2.draw(new Line2D.Double(leftX,topY,leftX+width,topY+height));
  
  //画 圆(特殊的椭圆)

  double centerX=rect.getCenterX();//获取某形状的中心坐标

  double centerY=rect.getCenterY();
  double radius=50;
  
  Ellipse2D circle=new Ellipse2D.Double();
  circle.setFrameFromCenter(centerX, centerY, centerX+radius, centerY+radius);//设置椭圆中点及a,b

  g2.fill(circle);//用当前颜色填充一图形 g2.setPaint(Color.BLUE)设置当前颜色

  //g2.draw(circle);

  
 }
}

// Graphics2D中绘制各种图形的方法

// 主要方法:

// Graphics2D g2=(Graphics2D)g;

// g2.draw--------

//

// 1. Rectangle2D rect=new Rectangle2D.Double(leftX,topY,width, height);

// 2. Ellipse2D ellipse=new Ellipse2D.Double();

// ellipse.setFrame(rect);//设置外接矩形

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

// 4. Ellipse2D circle=new Ellipse2D.Double();

// circle.setFrameFromCenter(centerX, centerY, centerX+radius, centerY+radius);


// 设置椭圆中点及a,b

 

以上代码来自:http://blog.sina.com.cn/s/blog_4ab057eb0100aouw.html#cmt_1313460
阅读(2800) | 评论(1) | 转发(0) |
0

上一篇:街头乞讨

下一篇:一个结束

给主人留下些什么吧!~~

zhaorongsu2008-11-17 20:45:52

弱弱地说 :咋都看不懂啊