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);
}
}

运行结果如下:

最新文章

  1. Ajax JQuery HTML 提交上传文件File HTML+ Ajax+ASP.NET+ WebService
  2. python 安装MySQLdb mysql_config not fount
  3. Linux命令之awk数组使用范例
  4. codevs http://www.codevs.cn/problem/?problemset_id=1 循环、递归、stl复习题
  5. 如何执行一条命令在C#里面。Process
  6. 安装m2crypto报错swig error : Unrecognized option -builtin
  7. wuzhicms字段的添加以及实现下载功能
  8. 二分图的判定hihocoder1121 and hdu3478
  9. 致命错误C0000034正在应用更新操作37解决方法
  10. Ubuntu 14.04 64bit 系统下打开PHPadmin时出现缺少mysqli|mysql 扩展的解决方法(php5)
  11. LDMIA、LDMIB、LDMDB、LDMDA、STMIA、LDMFD、LDMFA、LDMED、LDMEA指令详解
  12. 再次实践 MySQL chart - 每天5分钟玩转 Docker 容器技术(166)
  13. 我的WafBypass之道(upload篇)
  14. C#中 property 与 attribute的区别
  15. 性能监控(6)–JAVA下的jinfo命令
  16. JavaScript 基本数据类型和引用类型的区别详解
  17. 分享一款基于jquery的圆形动画按钮
  18. 在Linux上创建webrev(cont)[基于svn]
  19. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块等的加载顺序
  20. 代码对齐 (Alignment of Code,ACM/ICPC NEERC 2010,UVa1593)

热门文章

  1. bean的作用域解析
  2. winform, 实现窗口程序像QQ一样靠近桌面边缘自动隐藏窗口
  3. 累加和为 K 的最长子数组问题
  4. 第六章:Django 综合篇 - 19:部署 Django
  5. 配置Kubelet的垃圾回收
  6. es日志配置,只保存最近3天的日志
  7. spring boot http status 400
  8. 使用kuboard界面配置springcloud的其中一个模块设置环境变量,使用nacos配置地址等有关设置
  9. TCP和UDP有啥区别?
  10. 自学Spring