java学习——102.画直线
在计算机中,图形是一门很高深的学问,在我看来,因为里面涉及到比较多的数学问题......
用JAVA是可以画图的。
今天介绍简单的用Java画直线。
Java提供在组件上绘图的功能,通过绘图类Graphics对象调用绘图方向实现。
1、Graphics图形类
Graphics类在Java.awt中被定义,可以设置图形颜色、字符串字体等,其声明如下:
public abstract class Graphics extends Object
{
public abstract Color getColor(); //获取当前颜色
public abstract void setColor(Color c); //设置颜色
public abstract void drawLine(int x1, int y1, int x2, int y2); //画直线
public void drawRect(int x, int y, int width, int height) ; //画矩形
public abstract void fillRect(int x, int y, int width, int height); //填充矩形
public abstract void drawOval(int x, int y, int width, int height); //画椭圆
public abstract void drawString(String str, int x, int y); //显示字符串
public abstract Font getFont(); /获得颜色
public abstract void setFont(Font font);//设置颜色
}
但Graphics类是一个抽象类,不能被具体地实例化,要具体的画图,一般是通过在画布上进行画。
2、画布类Canvas
Canvas类也在Java.awt中。
可通过创建Canvas的实例来创建画布类组件。
3、组件绘图方法
在Java.awt.Component类中声明有方法:
public void paint(Graphics g); //组件绘制图形
public void repaint(); //调用paint()方法刷新图形
4、示例
在窗口中画对角线。
其完整代码如下:
import java.awt.*;
import javax.swing.*;
class CircleCanvas extends Canvas{//本类继承自画布类,用作绘图的面板,因为Java不允许多继承,所以要用此类
public void paint(Graphics g){//调用方法paint()来绘图
int x=this.getWidth()/2;//定义坐标x为横坐标的中心,this.getWidth()是取当前窗口的宽度
int y=this.getHeight()/2;//定义坐标y为纵坐标的中心,this.getHeight()是取当前窗口的高度
g.setColor(Color.red);//设置颜色为红色
g.drawLine(x, y, this.getWidth(), this.getHeight());//本例我是从中心开始画四条直线,最终合成对角线,调用Graphics的erawLine()方法来画直线
g.setColor(Color.green);
g.drawLine(x, y, 0, 0);
g.setColor(Color.red);
g.drawLine(x, y, this.getWidth(), 0);
g.setColor(Color.green);
g.drawLine(x, y, 0, this.getHeight());
}
}
public class Draw_Circle extends JFrame{//主类
private CircleCanvas circle;//创建对象
public Draw_Circle(){
super("画直线");
this.setVisible(true);
this.setBounds(200, 200, 200, 200);
circle=new CircleCanvas();//创建实例
this.getContentPane().add(circle);
}
publicstaticvoid main(String args[]){
new Draw_Circle();
}
}
其运行结果如下:
从本例可以发现,用Canvas绘图时,创建实例时并没有去调用paint()方法,此方法是在创建类时自动调用的。