java怎么绘制简单图形

互联网 19-11-22

Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.awt包中。在我们自己的java程序文件中,要使用Graphics类就需要使用import java.awt.Graphics语句将Graphics类导入进来。

Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等。本项目仅用到画直线的功能,其它图形绘制请自行点击查阅Java API。

Graphics类的drawLine()方法:drawLine(int x1,int y1,int x2,int y2)

此方法的功能是:在此图形上下文的坐标系中,使用当前颜色在点 (x1,y1) 和 (x2,y2)之间画一条线。

这里需要理解几个概念:

1)、图形上下文:通俗点讲,就是画图环境。每个窗口构件(如主窗口、按钮等),都有一个自己的图形上下文对象,我们就是使用这个对象来实现在构件上画图。这个对象就是Graphics对象。

2)、如何获得图形上下文:我们要在哪个构件上绘图,就调用那个构件的getGraphics()方法即可获得该构件的图形上下文对象,然后使用这个对象绘图。

3)、Java坐标系:

Java的坐标原点(0,0)位于屏幕的左上角,坐标度量以象素为单位,水平向右为X轴的正方向,竖直向下为Y轴的正方向,每个坐标点的值表示屏幕上的一个像素点的位置,所有坐标点的值都取整数,如下图所示:

4)、当前颜色:指图形上下文当前的颜色。每个图形上下文都有自己当前的颜色。通过Graphics对象的getColor()方法可获取改颜色,setColor()方法可设置颜色。

示例如下:

第一步:给DrawSee类添加成员变量,用来描述游戏区域的特征。

对DrawSee类来说,此类主要完成的功能是与用户交互,即显示游戏区域,显示数字,响应用户鼠标点击,显示用户鼠标点击后的结果等。我们现在考虑绘制10行10列游戏区域的问题。先给DrawSee类添加如下四个成员变量:

import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; public class DrawSee extends JFrame {     private static final int sx = 50;//游戏区域10*10方块的起始横坐标     private static final int sy = 50;//游戏区域10*10方块的起始纵坐标     private static final int w = 40;//每个小方格的边长     private static final int rw = 400;//游戏区域10*10方块的边长     ... }

第二步:添加绘制游戏区域的方法(即绘制10行10列的红色网格)

public void paintComponents(Graphics g) {         try {             // 设置线条颜色为红色             g.setColor(Color.RED);             // 绘制外层矩形框             g.drawRect(sx, sy, rw, rw);                         /* 绘制水平10个,垂直10个方格。              * 即水平方向9条线,垂直方向9条线,              * 外围四周4条线已经画过了,不需要再画。              * 同时内部64个方格填写数字。              */             for(int i = 1; i < 10; i ++) {                 // 绘制第i条竖直线                 g.drawLine(sx + (i * w), sy, sx + (i * w), sy + rw);                 // 绘制第i条水平线                 g.drawLine(sx, sy + (i * w), sx + rw, sy + (i * w));                             }         } catch (Exception e) {             e.printStackTrace();         }     }
import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; /**  *   * 程序入口  *  */ public class TestDrawLine {        public static void main(String[] args) {            new DrawSee();     }    }    class DrawSee extends JFrame {     private static final int sx = 50;//小方格宽度     private static final int sy = 50;//小方格高度     private static final int w = 40;     private static final int rw = 400;     private Graphics jg;     private Color rectColor = new Color(0xf5f5f5);     /**      * DrawSee构造方法      */     public DrawSee() {         Container p = getContentPane();         setBounds(100, 100, 500, 500);         setVisible(true);         p.setBackground(rectColor);         setLayout(null);            setResizable(false);         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                 try {                 Thread.sleep(500);         } catch (Exception e) {             e.printStackTrace();         }                 // 获取专门用于在窗口界面上绘图的对象         jg =  this.getGraphics();         // 绘制游戏区域         paintComponents(jg);              }     public void paintComponents(Graphics g) {         try {             // 设置线条颜色为红色             g.setColor(Color.RED);             // 绘制外层矩形框             g.drawRect(sx, sy, rw, rw);                          /* 绘制水平10个,垂直10个方格。              * 即水平方向9条线,垂直方向9条线,              * 外围四周4条线已经画过了,不需要再画。              * 同时内部64个方格填写数字。              */             for(int i = 1; i < 10; i ++) {                 // 绘制第i条竖直线                 g.drawLine(sx + (i * w), sy, sx + (i * w), sy + rw);                                  // 绘制第i条水平线                 g.drawLine(sx, sy + (i * w), sx + rw, sy + (i * w));                                  // 填写第i行从第1个方格到第8个方格里面的数字(方格序号从0开始)                 for(int j = 0; j < 10; j ++) {                     //drawString(g, j, i);                                     }             }         } catch (Exception e) {             e.printStackTrace();         }     } }

推荐教程:java开发入门

以上就是java怎么绘制简单图形的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 简单图形
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java下载文件名中文乱码解决

相关资讯