IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java简单图形绘制以及常见问题的说明 -> 正文阅读

[Java知识库]Java简单图形绘制以及常见问题的说明

前言:

在学习java的过程中,我最近接触到了与图形绘制相关的内容。为了完成学业中的作业,我拜读了许多大佬的文章和程序。现在作业倒是做完了,为了让自己最近所学有所属,我决定整理一下。若我所写有误,欢迎大佬批评指正。

关于简单绘制时图形容器的选择:

首先,有个前提得说明白。我们绘制图形时,自然是调用Graphics类进行绘制。但是绘制好的图形,我们总该找个容器来装吧。因此,可供选择的容器就有awt的子类Panel和Canvas类。Canvas可理解为画布,是容器的一种。而Panel类也为容器,两者皆可容纳Graphics的对象,但是Panel类可容纳对象的种类更多。当然,我们在单纯绘制简单图形时,使用Canvas类没有任何问题。但是使用Panel类,明显程序可塑性和可维护性会变得更强。在java中也有Javax.swing.JPanel对Panel进行拓展。在我们初学时,Panel其实已经够用。

import javax.swing.JFrame;//框架
import javax.swing.JPanel;//容器
import java.awt.Canvas;

?关于Graphics与Graphics2D之间的关系:

java对Graphics进行了拓展,也就是说Graphics2D是Graphics的拓展。我们在使用Graphics的时候,经常会看见它们的强制转换。将Graphics转化为Graphics2D类型进行使用,我在书写程序时也经常这样做。

 Graphics2D gx=(Graphics2D) g;

?关于常用的Graphics图形绘制工具:

画直线:

abstract void drawLine(int x1,int y1,int x2,int y2) 调用该函数可以画一条从(x1,y1)到(x2,y2)的直线

	gk.drawLine(gw*i,0,gw*i,180);

画椭圆(圆):

abstract void drawOval(int x, int y, int width, int height) 调用该函数可以画一个空心椭圆。形参表示这个椭圆的外接矩形的信息。x,y表示外接矩形左上角的坐标,width和height即外接矩形的宽高。在此基础上进行变行,将外界矩形变为一个正方形,即可画出一个圆来。

public abstract void fillOval(int x, int y, int width, int height) 调用该函数可以画一个实心椭圆。其它参数信息与画空心椭圆的函数一致。

gk.drawOval(20,20,20,20);//空心圆
gk.fillOval(80,80,20,20);//实心圆

画矩形:

abstract void drawRect(int x, int y, int width, int height ) 调用该函数,可以绘制一个矩形。x,y是矩形左上角的点的坐标,width和height为矩形的宽高

abstract void fillRect(int ,x, int y, int width, int height ) 调用该函数可以画一个实心矩形。同理x,y是矩形左上角的一个点,而width和height是矩形的宽高

	gx.fillRect(x,y,20,20);//绘制方形
    gx.drawRect(x,y,20,20);//绘制空心矩形

当然我们还有其它绘制图像的函数,从这点来说,java还是很方便的。其它函数可以去查查jdk手册,简单方便。

设置线条颜色:

我们经常遇到这样的需求,就是要求设置所绘制的图形的颜色。没有颜色,图形绘制出来难免显得单调。我们graphics刚好有设置线条颜色的函数。

abstract void setColor( Color c )调用这个函数可以设置线条颜色,其实就是相当于设置绘画时画笔的颜色。默认的画笔颜色,可以认为是黑色的。形参呢,其实就是Color的对象。而我们Color中设置了封装好的颜色对象,比如Color.RED,Color.BLUE。我们也可以手动设置RGB颜色对象。说到这里我们就不得不提,使用Color对象的时候要对Color库进行引用。Color是属于awt中的库。其引用代码可以这样写。

import java.awt.Color;//色彩

?我们在画图前预先设置好画笔的颜色,再进行图像绘制,就可以得到我们想要颜色的图像了。至于实心图形的绘制,也是一样的道理。我们只需要将画笔理解为颜料就可以了。

Graphics2D gx=(Graphics2D) g;
gx.setColor(Color.GREEN);//改变画笔颜色
gx.fillOval(x,y,20,20);//绘制圆形

?一个绘图实例:

我个人觉得这个例子在这一模块来说可能不太好。因为该题涉及了和鼠标的交互,作为一个单纯对图像绘制解说的例子,可能会存在干扰。但是我手头暂时没有好的例子。说直白点,就是作者太懒,没有预先写好适合例子的代码,各位读者讲究一下吧。

编写Java程序,创建一个窗体,并实现交互。在窗体内“单击鼠标左键”,在光标处绘制一个“绿圆”;窗体内“单击鼠标右键”,在光标处绘制一个“红色方框”;窗体内“双击鼠标左键”,清空所有已画“圆”和“方”。

其它得地方我就不拿出来了,我就把我设置图形的部分拿出来分享吧

class MyJpanel extends JPanel{
	int x,y;
	int num=0;
	public void paint(Graphics g){
		Graphics2D gx=(Graphics2D) g;
		if(num==1){
			gx.setColor(Color.GREEN);//改变画笔颜色
			gx.fillOval(x,y,20,20);//绘制圆形
		}//单击左键
		else if(num==3){
			gx.setColor(Color.WHITE);
			super.paint(gx);//清除画面内容
		}//双击左键
		else if(num==2){
			gx.setColor(Color.RED);
			gx.fillRect(x,y,20,20);//绘制方形
		}//单击右键
	}
}//容器

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:39:07  更:2021-10-15 11:39:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:38:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码