java:绘制图形
java绘图类:Graphics类
绘图是高级程序中必备的技术,在很多方面都能用到,如:绘制闪屏图片,背景图片和组件外观等。
1.Graphics类
Graphics类是所有图形上下文的抽象基类,Graphics类封装了java支持的基本绘图操作的所需状态信息,主要包括:颜色,字体,画笔,文本,图像。 Graphics类提供了绘图的常用方法,利用这些方法可以绘制一些基本图形(直线,圆弧,矩形,多边形,椭圆等)。
2.Graphics2D类
Graphics2D类继承了Graphics类,Graphics类可以绘制简单的图形,但功能十分有限。而Graphics2D类是一个更强大的绘图操作集合,因此Graphics2D类是最常用的一个绘图类。
绘制图形:
Graphics类的常用方法:
| 方法 | 说明 | 举例 |
| drawLine(int x1,int y1,int x2,int y2) | 直线 | drawLine(100,100,100,100); |
| drawArc(int x,int y,int width,int height,int startAngle, int arcAngle) | 无填充色弧线 | drawArc(100,100,100,200,100); |
| fillArc(int x,int y,int width, int height, int startAngle, int arcAngle) | 用setColor()方法设定的颜色,画着色椭圆的一部分。 | g.setColor(Color.green); g.fillArc(60,100,100,60,-90,-270); |
| drawRect(int x,int y,int width,int height) |
无填充色矩形 其中参数x和y指定左上角的位置,参数width和height是矩形的宽和高 |
g.drawRect(80,100,40,25); |
| fillRect(int x,int y,int width,int height) | 是用预定的颜色填充一个矩形,得到一个着色的矩形块 |
g.setColor(Color.yellow); g.fillRect(20,20,20,20); |
| drawPolygon(int xpoints[],int yPoints[],int nPoints) | 绘制一个普通多边形 |
int m ={10,50,10,50}; int n = {10,10,50,10}; drawPolygonm,n,100); |
| fillPolygon(int xPoints[],int yPoints[],int nPoints) | 用方法setColor()设定的颜色着色多边形。其中数组xPoints[]存储x坐标点,yPoints[]存储y坐标点,nPoints是坐标点个数 | int px1[]={50,90,10,50}; int py1[]={10,50,50,10}; int px2[]={140,180,170,180,140,100,110,140}; int py2[]={5,25,35,45,65,35,25,5}; g.setColor(Color.blue); g.fillPolygon(px1,py1,4); g.setColor(Color.red); g.drawPolygon(px2,py2,9); |
| drawOval(int x,int y,int width,int height) | 是画用线围成的椭圆形。其中参数x和参数y指定椭圆形左上角的位置,参数width和height是横轴和纵轴 | drawOval(10,10,100,50); |
续表:
| 方法 | 说明 | 举例 |
| fillOval(int x,int y,int width,int height) | 是用预定的颜色填充的椭圆形,是一个着色块。也可以用画椭圆形方法画圆形,当横轴和纵轴相等时,所画的椭圆形即为圆形 | g.drawOval(10,10,60,100); g.setColor(Color.cyan);g.fillOval(100,50,60,60); g.setColor(Color.magenta);g.fillOval(15,50,100,50); |
| draw3DRect(int x,int y,int width,int height, boolean raised) | 画一个突出显示的矩形。其中x和y指定矩形左上角的位置,参数width和height是矩形的宽和高,参数raised是突出与否 | draw3DRect(100,30,30,50, true); |
| fill3DRect(int x,int y,int width,int height,boolean raised) | 用预定的颜色填充一个突出显示的矩形 | g.draw3DRect(80,100,40,25,true); g.setColor(Color.yellow); g.fill3DRect(30,70,20,30,true); |
示例:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class Drawtest extends JFrame
{
public Drawtest(){
setTitle("示例");
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new s());
}
class s extends JPanel{
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
Shape[] shapes = new Shape[4];
shapes[0] = new Ellipse2D.Double(5,5,100,100);
shapes[1] = new Rectangle2D.Double(110,5,100,100);
shapes[2] = new Rectangle2D.Double(15,15,80,80);
shapes[3] = new Ellipse2D.Double(120,15,80,80);
for(Shape shape:shapes){
Rectangle2D bounds = shape.getBounds2D();
if(bounds.getWidth() == 80) g2.fill(shape);
else g2.draw(shape);
}
}
}
public static void main(String[] args) {
new Drawtest().setVisible(true);
}
}
运行结果如下:


java:绘制图形的更多相关文章
- Java 在PPT中绘制图形
Microsoft PowerPoint可支持在幻灯片中插入各种类型的图形并且可设置图形填充.线条颜色.图形大小.位置等.下面将通过Java编程来演示在PPT中绘制图形的方法. 工具:Free Spi ...
- Java 在PDF文档中绘制图形
本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...
- Java 窗口 绘制图形 #2
写在前面: 高考结束咧,爽到啊,好耶 完善了Java 窗口 绘制图形 #1里面的程序 加入了缩放平移功能,给代码加了注释 1 package my_package; 2 3 import java.a ...
- python中的turtle库绘制图形
1. 前奏: 在用turtle绘制图形时,需要安装对应python的解释器以及IDE,我安装的是pycharm,在安装完pycharm后,在pycharm安装相应库的模块,绘图可以引入turtle模块 ...
- 在Android中使用OpenGL ES进行开发第(三)节:绘制图形
一.前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D ...
- Java Swing图形界面开发
本文转自xietansheng的CSDN博客内容,这是自己见过的最通俗易懂.最适合快速上手做Java GUI开发的教程了,这里整合一下作为自己以后复习的笔记: 原文地址:https://blog.cs ...
- Android OpenGL ES 开发:绘制图形
OpenGL 绘制图形步骤 上一篇介绍了 OpenGL 的相关概念,今天来实际操作,使用 OpenGL 绘制出图形,对其过程有一个初步的了解. OpenGL 绘制图形主要概括成以下几个步骤: 创建程序 ...
- CSS 魔法系列:纯 CSS 绘制图形(心形、六边形等)
<CSS 魔法系列>继续给大家带来 CSS 在网页中以及图形绘制中的使用.这篇文章给大家带来的是纯 CSS 绘制五角星.六角形.五边形.六边形.心形等等. 我们的网页因为 CSS 而呈现千 ...
- html5 Canvas绘制图形入门详解
html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏览器(FireFox.Chrome. ...
- html5 canvas 笔记一(基本用法与绘制图形)
<canvas> 元素 <canvas id="tutorial" width="150" height="150"> ...
随机推荐
- JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
一.前言 我们在日常学习中,对一个java代码有问题,不知道jvm内部怎么进行解析的时候:有个伟大壮举就是反编译,这样就可以看到jvm内部怎么进行对这个java文件解析的!我们可以使用JDK自带的ja ...
- C++ 左值引用与 const 关键字
左值引用是已定义的变量的别名,其主要用途是用作函数的形参,通过将左值引用变量用作参数,函数将使用原始数据,而不是副本.引用变量必须在声明时同时初始化,可将 const 关键字用于左值引用,如下所示: ...
- 萌新码农的第一篇:MarkDown的使用方法
MarkDown的使用方法 使用的编辑软件Typora 1.标题的使用方法 输入''#''然后空格,输入标题名字即可生成标题. 随着''#''的增多,标题的大小会依次减小,最多到六级标题 2.排字 字 ...
- 优化过的containerd配置文件:config.toml
disabled_plugins = [] imports = [] oom_score = 0 plugin_dir = "" required_plugins = [] roo ...
- logstash知识点
Logstash是位于Data和Elasticsearch之间的一个中间件.Logstash是一个功能强大的工具,可与各种部署集成. 它提供了大量插件. 它从数据源实时地把数据进行采集,可帮助您解析, ...
- docker -v 和Dockerfile 中VOLUME 区别
在学习Dockerfile的过程中有个VOLUME命令,很多教程或书中说的是用来定义匿名卷的,其作用如下: 容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文 ...
- Loki二进制命令帮助
Usage of config-file-loader: -auth.enabled Set to false to disable auth. (default true) -azure.accou ...
- Prometheus高可用部署
Prometheus的本地存储给Prometheus带来了简单高效的使用体验,可以让Promthues在单节点的情况下满足大部分用户的监控需求.但是本地存储也同时限制了Prometheus的可扩展性, ...
- GTID主从
GTID主从 目录 GTID主从 GTID概念介绍 GTID工作原理 GTID主从配置 GTID概念介绍 GTID即全局事务ID (global transaction identifier), 其保 ...
- 分支结构之二:switch-case
1.格式 switch(表达式){case 常量1: 执行语句1; //break; case 常量2: 执行语句2; //break; ... default: 执行语句n; //break; } ...