分享

java学习——102.画直线

 pythonjava学习 2021-04-06

在计算机中,图形是一门很高深的学问,在我看来,因为里面涉及到比较多的数学问题......

用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());//本例我是从中心开始画四条直线,最终合成对角线,调用GraphicserawLine()方法来画直线

           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()方法,此方法是在创建类时自动调用的。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多