[color=blue]******************java 2D图形
要想绘制java 2D图形,就需要获得一个Graphics2D类对象,这个类是Graphics类的子类
paintComponent 方法会自动获取一个Graphics2D对象,我们需要转换类型
public void paintComponent(Graphics g){
Graphics2D g2= (Graphics2D)g;
}
java2D库采用面向对象的方式将几何图形组织起来,包含直线,矩形的椭圆类
Line2D Rectangle2D Eclipse2D 这些类都实现了shape接口
java2D库对每个图形类设置了两个版本,一个是节省空间的float类型的坐标,另一个是为那些懒惰的程序员提
供的double类型的坐标
如:Rectangle2D.Float Rectangle2D.Double
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
public class DrawTest{
public static void main(String[] args){
DrawFrame frame = new DrawFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//显示系统支持的字体
String[] fontNames = GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getAvailableFontFamilyNames();
for (String fontName :fontNames)
System.out.println(fontName);
}
}
class DrawFrame extends JFrame{
public DrawFrame(){
setTitle("drawtest");
setSize(DEFALUT_WIDTH,DEFALUT_HEIGHT);
DrawPanel panel = new DrawPanel();
panel.setBackground(SystemColor.desktop);//设置背景色 SystemColor.window可以设成桌面所有
窗口的默认色
add(panel);
}
public static final int DEFALUT_WIDTH = 400;
public static final int DEFALUT_HEIGHT = 400;
}
class DrawPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
//draw a rectangle
double leftX = 100;
double topY = 100;
double width = 200;
double height = 150;
Rectangle2D rect = new Rectangle2D.Double(leftX,topY,width,height);
g2.setPaint(Color.RED);//用预定义的常量设定颜色
g2.fill(rect); //使用当前颜色填充闭合图形
g2.drawString("Warning",100,100);
g2.draw(rect);
//draw the enclose ellipse
Ellipse2D ellipse = new Ellipse2D.Double();
ellipse.setFrame(rect);
g2.setPaint(new Color(0,255,128));
g2.fill(ellipse);//用红绿蓝成分创建一个color对象设置颜色
g2.draw(ellipse);
//draw a diagonal line
g2.draw(new Line2D.Double(leftX,topY,leftX+width,topY+height));
//draw a circle with the same Center
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);
}
}
***********************注释*************************
-------------java.awt.geom.RectangularShape
1.double getCenterX()
double getCenterY()
double getMinX()
double getMinY()
double getMaxX()
double getMaxY()
返回闭合矩形的中心,以及最大,最小的x和y坐标
2.double getX()
double getY()
返回闭合矩形的高和宽
3.double getX()
double getY()
返回闭合矩形左上角的坐标
---------------java.awt.geom.Rectangle2D.Double
Rectangle2D.Double(double x,double y,double w,double h)
使用给定的左上角坐标,和宽高来构造一个矩形
---------------java.awt.geom.Ellipse2D.Double
Ellipse2D.Double(double x,double y,double w,double h)
使用给定的左上角,宽和高的外接矩形构造一个椭圆
-------------java.awt.geom.Point2D.Double
Point2D.Double(double x,double y)
使用给定坐标构造一个点
--------------java.awl.geom.Line2D.Double
Line2D.Double(Point2D start,Point2D end)
Line2D.Double(double startX,double starY,double endX,doubleY)
使用给定的起点和终点构造直线
------------------java.awt.Color
提供了13个预定义的常量
Color(int r,int g,int b)
创建一个颜色对象
------------------java.awt.Graphics
void setColor(Color c)
改变当前的颜色,后续的绘图都使用这个新颜色
-----------------java.awt.Graphics2D
void setPaint(Paint p)
设置这个图形环境的绘制属性
--------------java.awt.Component
void setBackground(Color c)
设置背景颜色
void setForeground(Color c)
设置前景色[/color]
要想绘制java 2D图形,就需要获得一个Graphics2D类对象,这个类是Graphics类的子类
paintComponent 方法会自动获取一个Graphics2D对象,我们需要转换类型
public void paintComponent(Graphics g){
Graphics2D g2= (Graphics2D)g;
}
java2D库采用面向对象的方式将几何图形组织起来,包含直线,矩形的椭圆类
Line2D Rectangle2D Eclipse2D 这些类都实现了shape接口
java2D库对每个图形类设置了两个版本,一个是节省空间的float类型的坐标,另一个是为那些懒惰的程序员提
供的double类型的坐标
如:Rectangle2D.Float Rectangle2D.Double
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
public class DrawTest{
public static void main(String[] args){
DrawFrame frame = new DrawFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//显示系统支持的字体
String[] fontNames = GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getAvailableFontFamilyNames();
for (String fontName :fontNames)
System.out.println(fontName);
}
}
class DrawFrame extends JFrame{
public DrawFrame(){
setTitle("drawtest");
setSize(DEFALUT_WIDTH,DEFALUT_HEIGHT);
DrawPanel panel = new DrawPanel();
panel.setBackground(SystemColor.desktop);//设置背景色 SystemColor.window可以设成桌面所有
窗口的默认色
add(panel);
}
public static final int DEFALUT_WIDTH = 400;
public static final int DEFALUT_HEIGHT = 400;
}
class DrawPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
//draw a rectangle
double leftX = 100;
double topY = 100;
double width = 200;
double height = 150;
Rectangle2D rect = new Rectangle2D.Double(leftX,topY,width,height);
g2.setPaint(Color.RED);//用预定义的常量设定颜色
g2.fill(rect); //使用当前颜色填充闭合图形
g2.drawString("Warning",100,100);
g2.draw(rect);
//draw the enclose ellipse
Ellipse2D ellipse = new Ellipse2D.Double();
ellipse.setFrame(rect);
g2.setPaint(new Color(0,255,128));
g2.fill(ellipse);//用红绿蓝成分创建一个color对象设置颜色
g2.draw(ellipse);
//draw a diagonal line
g2.draw(new Line2D.Double(leftX,topY,leftX+width,topY+height));
//draw a circle with the same Center
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);
}
}
***********************注释*************************
-------------java.awt.geom.RectangularShape
1.double getCenterX()
double getCenterY()
double getMinX()
double getMinY()
double getMaxX()
double getMaxY()
返回闭合矩形的中心,以及最大,最小的x和y坐标
2.double getX()
double getY()
返回闭合矩形的高和宽
3.double getX()
double getY()
返回闭合矩形左上角的坐标
---------------java.awt.geom.Rectangle2D.Double
Rectangle2D.Double(double x,double y,double w,double h)
使用给定的左上角坐标,和宽高来构造一个矩形
---------------java.awt.geom.Ellipse2D.Double
Ellipse2D.Double(double x,double y,double w,double h)
使用给定的左上角,宽和高的外接矩形构造一个椭圆
-------------java.awt.geom.Point2D.Double
Point2D.Double(double x,double y)
使用给定坐标构造一个点
--------------java.awl.geom.Line2D.Double
Line2D.Double(Point2D start,Point2D end)
Line2D.Double(double startX,double starY,double endX,doubleY)
使用给定的起点和终点构造直线
------------------java.awt.Color
提供了13个预定义的常量
Color(int r,int g,int b)
创建一个颜色对象
------------------java.awt.Graphics
void setColor(Color c)
改变当前的颜色,后续的绘图都使用这个新颜色
-----------------java.awt.Graphics2D
void setPaint(Paint p)
设置这个图形环境的绘制属性
--------------java.awt.Component
void setBackground(Color c)
设置背景颜色
void setForeground(Color c)
设置前景色[/color]