当前课程知识点:Java程序设计 >  第七章 图形用户界面 >  7.1-绘图 >  绘图

返回《Java程序设计》慕课在线视频课程列表

绘图在线视频

绘图

下一节:Swing基础

返回《Java程序设计》慕课在线视频列表

绘图课程教案、知识点、字幕

大家好

欢迎回来继续学习

JAVA语言程序设计

这一节我们来学习

与绘图相关的基本知识

在这一节我要给大家

简要的介绍一下

JAVA的绘图环境和图形对象

这要涉及到颜色和字体

还有这个抽象的Graphics类

以及Graphics的抽象子类

Grahics2D这两个类

首先我们来看一下

JAVA中的图形环境和图形对象

图形环境

我们先来看一下它的坐标

GUI组件它的左上角

默认为坐标的原点

然后从左上角到右下角

水平坐标X和垂直坐标Y

都是增加的

那坐标的单位是象素

如果我们需要在JAVA程序中绘图

比如说画一个矩形

画一个弧等等

如果需要绘制各种图形的话

就需要专门的图形环境

那怎么得到这个绘图的环境呢

我们需要绘图的程序

会接收到一个

叫做Graphics的引用

Graphics是JAVA里面的

一个抽象的类

我们并不能够去实现

一个Graphics的对象

但是Graphics类里面

规定了与平台无关的绘图接口

这样的话我们用这样的接口

编写的程序

就可以符合JAVA的要求

一处编写 各处执行了

那么真正的要在某一个平台上

去执行这个程序的时候

让程序真的绘图的时候

那肯定还得有一个

实现了Graphics类的子类对象

来为我们提供绘图环境了

实际上各个平台上

实现的这个JAVA系统

都会自动创建一个

Graphics类的非抽象的子类

这个非抽象的子类

实际上里面就包含着

与本地系统相关的

这个绘图环境

但是这个对于程序员来说

是透明的 我们感觉不到

我们感觉到的就是传来了一个

Graphics类型的引用给我们

然后我们就可以用它

来实现绘图

那什么时候这个绘图环境引用

会传过来呢

我们程序如果要实现

绘图的功能的话

肯定是要去执行

这个paint方法的

那么系统就会传一个

指向特定平台的

Graphics子类对象的

这么一个引用传过来

比如说这个引用名叫g

然后我们利用这个引用

就可以实现我们想实现的绘图了

要绘图的话

我们肯定就需要设置图形的颜色

那有关颜色的操作

都在color这个类里面

这个color

是在awt包里面的

这个表里列出了color类

以及Graphics类中

与颜色有关的方法

我们来看这里有几个常量

表示绿色 红色

还有我们来看

它这个构造方法里面

可以接收什么呢

接收指定的红绿蓝颜色的分量

像比如说getRed这个方法

它就会返回红色分量它的值

那像setColor

getColor方法

它不属于color类

但是也是与颜色相关的

它是Graphics

这个绘图类里面的两个方法

分别可以用来设置组件的颜色

或者取得图形组件的颜色

另外我们在程序中

也经常需要控制字体

那字体也专门有一个类

叫Font类

这个类它也是在awt包里面

那这个表中就列出了

字体Font类

以及这个Graphics类里面

与字体有关的方法

这里同样有几个常量

代表字体的不同风格

普通风格的

黑体字的 斜体字的

然后它的构造方法

可以利用指定的字体风格和大小

创建一个Font对象

还有这个getStyle

可以返回当前字体风格的整数值

isPlain测试一个字体

是否普通的字体风格

像getFont和setFont

它不是Font类里面的方法

它是这个图形环境类

Graphics类里面的方法

它可以用来获得当前的字体

设置这个字体为指定的某种字体

大家看看这个setFont

它的参数是一个Font对象

接下来我们就来了解一下

这个Graphics类

Graphics类

它可以用来绘制字符串

或者是各种的图形

也就是说在图形环境里面

我们写一个字符串

也可以像绘图一样

把它绘制出来

在这几页的这个表中

我简单的列了一下

Graphics类的常用方法

比如说绘制字符串

绘制一条线段 矩形

实心矩形等等

这里有常用的

各种图形的绘制方法

它们的参数在这个表里

有简要的说明

那么大家可以自己简单的

编个程序 用用试试

大致也就能了解它怎么用了

如果要详细的了解

每个方法的说明

希望大家去看API的文档

接下来我们就来看一个

绘图的例子

最终结果就是我们现在看见的

这个样子

希望在窗口里面

绘制各种各样的图形

填充不同的颜色

这个例题目标是

要在这样一个窗口中

绘制一些简单的图形

填充颜色

由于需要这么一个

本地应用程序主窗口

所以我们写的这个类

GraphicsTester

就需要继承JFrame

这样它就有主窗口了

然后在它的构造方法中

要首先调用它窗类的构造方法

传一个字符串过去

那么这个字符串

将来就会显示在

这个主窗口的标题栏里面

然后就是要显示窗口

设置窗口大小

接下来主要的绘图工作

都在这个paint方法中

我们看paint方法接收一个

Graphics引用作为参数

这个引用实际上

它是指向本地的JAVA系统

所产生的这个Graphics的

某个非抽象子类的对象

但是这些对于我们程序员来说

都是透明的 我们看不到

我们看到的就是说

这是一个Graphics引用

然后接下来第一件事情

一定要给它超类的paint方法

把这个引用传过去

然后就是我们来设置

字体颜色这些

然后设置完了以后

我们来看绘制一个字符串

drawString

就像画图一样

去画一个字符串出来

那么这个字符串

是显示在这了

我们是给它定位了坐标位置

还有颜色是蓝色

粗体12号字放在这了

那接下来我们再

另外设置一种字体和颜色

再写一个字符串

我们看到红色的字符串

在这显示出来了

在这两个字符串底下

我们给它准确的坐标位置

起点和终点

然后绘制一条直线

那么在这画了一条直线

注意前面我们用setcolor

把颜色设置成红色了

所以这条直线也就是红色

接下来我们每一次

绘制不同图形之前

先用setcolor

设置一个我们希望的颜色

然后去画这些图形

画了空心矩形 实心矩形

还有空心 实心的圆角矩形

还有有凸起效果的

这个空心的矩形

还有有凹陷效果的实心的矩形

以及这个椭圆 圆弧扇形

多边形等等这些

大家可以去尝试着

改改这些坐标参数

你看看这些图形

它的大小位置

是不是会有些变化

去尝试一下

好 那么这个是这个paint方法

然后我们来看在主方法中

我们就要构造一个

GraphicsTester对象

构造这么一个对象以后

然后接下来要设置一下

关闭窗口的默认操作

就是我们要点这个叉子的话

就窗口是要退出程序

关闭窗口 退出程序

好 那这样的话

我们启动这个程序以后

在这个构造方法中

就会设置让这个窗口可见

窗口可见

那么需要绘制窗口的时候

这个paint方法就会被自动调用

然后这些图就都画出来了

在刚才的例子中

我们看到了如何运用Graphics

去绘制一些简单的图形

以及填充颜色

那如果我们希望这个图

更炫一些 更漂亮一些

还有没有更好的东西

能给我们用呢 还有

接下来我们就来简单的看一下

还有一个JAVA2D这个API

能给我们提供些什么

JAVA2D API

分布在多个包里面

这里列了一下

它们所在的包中

那么使用这个JAVA2D API

我们可以很容易的

绘制各种形状

还可以控制笔画

比如笔画的粗细

线的端头的样式

比如说虚线

还可以用单色 渐变色

和纹理来填充形状

另外还可以对图形

进行平移 旋转 伸缩 切变

同时也可以对图形

进行模糊 锐化这些操作

还可以构建重叠的文本和图形

以及对形状进行剪切

把它限制在一个任意区域内等等

JAVA2D给我们提供了

很多很好的绘图功能

但是在我们的课中

没有那么多课时去详细介绍

只是在这简单给大家提一下

如果大家感兴趣

也是还要去参考

它的API文档

接下来我们就来了解一下

有一个类叫Graphics2D

它是Graphics类的子类

它也是一个抽象类

如果我们要使用

Graphics2D API的话

就要通过Graphics2D对象来用

像我们刚才说了

如果我们要画图的话

有一个Graphics引用

会被传递给paint方法

这样我们在paint方法里面

就可以用它绘图了

但是现在我们又说

需要用Graphics2D

来使用这个更好一些

更炫一些的绘图功能

那么能够这样做吗

实际上传给paint方法的

是Graphics类的子类

Graphics2D的

一个再下级的子类的实例

所以我们是可以把得到的

这个绘图对象的引用

转成Graphics2D类型的

比如说大家看这样

我们得到了一个绘图对象

比如说叫g

我们可以把这个引用

强制转换成Graphics2D的引用

因为它本身就是一个

Graphics2D的

再下级的非抽象子类的引用

好 下面我们就来看一个

用Graphics2D来绘图的例子

现在我们来看这个简单的

使用Graphics2D绘图的例子

在这个paint方法中

我们将这个参数引用

做强制类型转换

转换成Graphics2D类型的引用

然后我们就可以用

这个Graphics2D它的方法了

setPaint drawString

这个setPaint

就是设置了颜色的变化

从什么颜色开始

变到什么颜色

从红的变成黄的

起始坐标点 结束坐标点

这是设置了一个颜色的渐变

这个设置好了以后

我们再调用drawString

去画这个字符串出来

我们看到这个字符串的颜色

它是渐变的

这就是使用这个

Graphics2D绘图的思路

实际上就是把它

引用转换一下类型

然后更多的内容 更多的功能

大家可以去查这个API的文档

然后可以尝试着去使用

Graphics2D里面的

各种不同的绘图功能

好 在这一节

我们简单的了解了一下

JAVA的绘图环境

以及如何在JAVA程序中

绘制一些简单的图形

包括怎么样使用Graphics类

Graphics2D

还有一个管颜色的color类

一个管字体的Font类

只是给大家做了一点点简单介绍

但是我相信大家已经了解了

在JAVA里面

绘图的基本思路是什么

接下来我们还要给大家介绍

更多的图形用户界面的

组件这些内容

Java程序设计课程列表:

第一章 Java语言基础知识

-1.0-导学

--1.0-导学

--JDK的安装与配置01

--JDK的安装与配置02

--JDK的安装与配置03

--编辑并执行第一个java程序01

--编辑并执行第一个java程序02

--编辑并执行第一个java程序03

--eclipse的安装和配置01

--eclipse的安装和配置02

--eclipse的安装和配置03

--使用eclipse进行Java的开发01

--使用eclipse进行Java的开发02

--使用eclipse进行Java的开发03

-1.1-Java与面向对象程序设计简介

--1.1.1 Java与面向对象程序设计简介

--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介

-1.2-基本数据类型与表达式

--1.2.1-基本数据类型与表达式

-第一章 Java语言基础知识--1.2-基本数据类型与表达式

-1.3-数组

--1.3.1-数组

-第一章 Java语言基础知识--1.3-数组

-1.4-算法的流程控制

--1.4.1-算法的流程控制

--第一章 Java语言基础知识--1.4-算法的流程控制

-1.5-第一章小结

--1.5.1-第一章小结

-第一章编程练习题

-课件

--外部链接

第一章续-习题讲解视频

-Java环境配置、Eclipse使用、Helloworld程序详解

--JAVA的安装和配置

--编写并执行第一个Java程序及Java的跨平台性

--eclipse的安装和配置

--使用eclipse建立Java项目、编写和运行Java程序

--Java注释和Eclipse中的注释操作

--详解HelloWorld程序

-Java数据类型

--Java数据类型介绍

--Java整数类型

--Java浮点类型

--Java字符类型和布尔类型

--数据类型实战

--数据类型转换

--Java强制类型转换精度损失示例与表达式中的数据类型转换

-Java数组

--Java数组介绍、声明与使用

--一维数组的初始化与length属性

--数组索引的原理与使用

--二维数组的介绍与使用

-Java变量

--Java的变量

-命令行参数

--命令行参数的介绍

第二章 类与对象

-2.0-导学

--2.0-导学

-2.1-面向对象方法的特性

--2.1-面向对象方法的特性

--第二章 类与对象--2.1-面向对象方法的特性

-2.2-1-类声明与对象创建

--2.2-1-类声明与对象创建

--第二章 类与对象--2.2-1-类声明与对象创建

-2.2-2-数据成员

--2.2-2-数据成员

--第二章 类与对象--2.2-2-数据成员

-2.2-3-方法成员

--2.2-3-方法成员

--第二章 类与对象--2.2-3-方法成员

-2.2-4-包

--2.2-4-包

--第二章 类与对象--2.2-4-包

-2.2-5-类的访问权限控制

--2.2-5-类的访问权限控制

--第二章 类与对象--2.2-5-类的访问权限控制

-2.3-1-对象初始化

--2.3-1-对象初始化

--第二章 类与对象--2.3-1-对象初始化

-2.3-2-内存回收

--2.3-2-内存回收

--第二章 类与对象--2.3-2-内存回收

-2.4-枚举类

--2.4-枚举类

--第二章 类与对象--2.4-枚举类

-2.5-应用举例

--2.5-应用举例

-2.6-第2章小结

--2.6-第2章小结

-第二章编程练习题

-课件

--第二章课件

第三章 类的重用

-3.0-导学

--3.0-导学

-3.1.1-3.1.2-类继承的概念和语法

--3.1.1-3.1.2-类继承的概念和语法

--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法

-3.1.3-隐藏和覆盖

--3.1.3-隐藏和覆盖

--第三章 类的重用--3.1.3-隐藏和覆盖

-3.2-Object 类

--3.2-Object 类

--第三章 类的重用--3.2-Object 类

-3.3-终结类与终结方法

--3.3-终结类与终结方法

--第三章 类的重用--3.3-终结类与终结方法

-3.4-抽象类

--3.4-抽象类

--第三章 类的重用--3.4-抽象类

-3.5-泛型

--3.5-泛型

--第三章 类的重用--3.5-泛型

-3.6-类的组合

--3.6-类的组合

-3.7-小结

--3.7-小结

-第三章编程练习题

-课件

--课件

第四章 接口与多态

-4.0-导学

--导学

-4.1-接口

--接口

--第四章 接口与多态--4.1-接口

-4.2.1-4.2.2-类型转换

--类型转换

--第四章 接口与多态--4.2.1-4.2.2-类型转换

-4.2.3-方法的查找

--方法的查找

--第四章 接口与多态--4.2.3-方法的查找

-4.3-多态的概念

--多态的概念

--第四章 接口与多态--4.3-多态的概念

-4.4-多态的应用举例

--多态的应用举例

--第四章 接口与多态--4.4-多态的应用举例

-4.5-构造方法与多态性

--构造方法和多态性

--第四章 接口与多态--4.5-构造方法与多态性

-4.6-本章小结

--本章小结

-第四章编程作业

-课件

--课件

第五章 输入输出

-5.0-导学

--5.0-导学

-5.1.1-5.1.2-异常处理的概念

--5.1.1-5.1.2-异常处理的概念

--第五章 输入输出--5.1.1-5.1.2-异常处理的概念

-5.1.3-5.1.5-异常的处理

--5.1.3-5.1.5-异常的处理

--第五章 输入输出--5.1.3-5.1.5-异常的处理

-5.2-输入输出流的概念

--输入输出流的概念

--第五章 输入输出--5.2-输入输出流的概念

-5.3.1-写文本文件

--写文本文件

--第五章 输入输出--5.3.1-写文本文件

-5.3.2-读文本文件

--读文本文件

--第五章 输入输出--5.3.2-读文本文件

-5.3.3-写二进制文件

--写二进制文件

--第五章 输入输出--5.3.3-写二进制文件

-5.3.4-读二进制文件

--读二进制文件

-5.3.5-File类

--File类

-5.3.6-处理压缩文件

--处理压缩文件

-5.3.7-对象序列化

--对象序列化

-5.3.8-随机文件读写

--随机文件读写

-5.4-本章小结

--本章小结

-课件

--课件

第六章 对象群体的组织

-6.0-导学

--导学

-6.1-Java集合框架介绍

--Java集合框架介绍

--第六章 对象群体的组织--6.1-Java集合框架介绍

-6.2-主要接口及常用的实现类

--6.2-主要接口及常用的实现类

--第六章 对象群体的组织--6.2-主要接口及常用的实现类

-6.3-常用算法

--常用算法

-6.4-数组实用方法

--6.4-数组实用方法

-6.5-基于动态数组的类型(Vector, ArrayList)

--基于动态数组的类型(Vector, ArrayList)

-6.6-遍历Collection

--遍历Collection

-6.7-Map接口及其实现

--Map接口及其实现

-6.8-第6章小结

--第6章小结

-课件

--课件

第七章 图形用户界面

-7.0-导学

--导学

-7.1-绘图

--绘图

-7.2-Swing基础

--Swing基础

-7.3-Swing的层次

--Swing的层次

-7.4-布局管理

--布局管理

-7.5-内部类

--内部类

-7.6-事件处理的基本概念

--事件处理的基本概念

-7.7-事件派发机制

--事件派发机制

-7.8-顶层容器

--7.8-顶层容器

-7.9-中间层容器(一)

--7.9-中间层容器(一)

-7.10-中间层容器(二)

--7.10-中间层容器(二)

-7.11-原子组件(一)

--7.11-原子组件(一)

-7.12-原子组件(二)

--7.12-原子组件(二)

-7.13-原子组件(三)

--7.13-原子组件(三)

-7.14-其它Swing特性

--7.14-其它Swing特性

-7.15-第7章小结

--7.15-第7章小结

-课件

--课件

绘图笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。