Graphics对象 paintComponent方法包含一个 Graphics类型 的参数。 Graphics对象记录针对绘制图形和文本的 一系列设置,比如设置的图标或当前颜色 字体等。 ·Java中,所有绘制都必须通过一个图形对 象。 6 北大青鸟
6 Graphics对象 • paintComponent方法包含一个Graphics类型 的参数。 • Graphics对象记录针对绘制图形和文本的 一系列设置,比如设置的图标或当前颜色、 字体等。 • Java中,所有绘制都必须通过一个图形对 象
Graphics对象的局限性 可以用 Graphics对象绘制的图形是原始图 形 对于这些图形,不能使用实数坐标 不能绘制虚线或宽度不定的线条 不能使用纹理或渐变颜色填充形体 北大青鸟
7 Graphics对象的局限性 • 可以用Graphics对象绘制的图形是原始图 形。 • 对于这些图形,不能使用实数坐标 • 不能绘制虚线或宽度不定的线条 • 不能使用纹理或渐变颜色填充形体
Graphics2D对象 为了解决图形对象的 局限性,在Java11以后 的版本中引入了Jaa2D Java2D包括一个 Graphics2D类,此类扩展 了 Graphics类,所有图形方法都可以配合 Graphics2D对象使用 Java2D图形的重要功能 颜色和图案:图形可以用渐变颜色和填充图案着色。 透明绘制:图形的不透明度通过a透明值控制。 本地字体:平台上的所有本地字体都可用于绘制文本。 画笔的显式控制:可以使用线条的粗细、虚线图案以及 段连接样式。 坐标系的转换:可以使用平移、缩放、旋转和剪切 北大青鸟
8 Graphics2D对象 • Java2D 包括一个 Graphics2D 类,此类扩展 了 Graphics 类,所有图形方法都可以配合 Graphics2D 对象使用 • Java 2D 图形的重要功能: – 颜色和图案:图形可以用渐变颜色和填充图案着色。 – 透明绘制:图形的不透明度通过 α 透明值控制。 – 本地字体:平台上的所有本地字体都可用于绘制文本。 – 画笔的显式控制:可以使用线条的粗细、虚线图案以及 段连接样式。 – 坐标系的转换:可以使用平移、缩放、旋转和剪切 为了解决图形对象的 局限性,在Java1.1以后 的版本中引入了Java 2D
基本的绘图方法 每个AWT组件定义一种传递 Graphics对象的 paint 方法,绘制便是在该对象上执行。 public void paint(Graphics g)i g. setcolor( somero1ox);//设置颜色 g. setFont( somelimi tedFont);/设置字体 g. drawstring(.);//绘制字符串 g. drawline(.);//画线 设置 g. drawRect(.);//绘制图形轮廓 g.£i11Rect(.);//绘制填充图形 笔 数 g. drawPolygon(..);//绘制图形轮廓 g.£i11 Polygon(...);//绘制图形轮廓 上大青另
9 基本的绘图方法 public void paint(Graphics g) { g.setColor(someColor); // 设置颜色 g.setFont(someLimitedFont); //设置字体 g.drawString(...);//绘制字符串 g.drawLine(...); //画线 g.drawRect(...); // 绘制图形轮廓 g.fillRect(...); // 绘制填充图形 g.drawPolygon(...); //绘制图形轮廓 g.fillPolygon(...); //绘制图形轮廓 ... } 每个 AWT 组件定义一种传递 Graphics 对象的 paint 方法,绘制便是在该对象上执行。 设置 画 笔参 数
Java2D中的基本绘图方法 public void paintcomponent(Graphics g)t super paintcomponent(g)i Graphics2Dg2d=( Graphics2D)g;//强制转换为 Graphics2D g2d. setPaint(fillColororpattern)i g2d. setstroke(penThicknessOrPattern) g2d. setcomposite(someAlphaComposite)i g2d setFont(anyFont) 设置 g2d. setcolor (anyColor)i g2d. translate(.)i g2d rotate(.)i 数 g2d. scale(.)i g2d shear(.)i g2d. setrransform(someAffineTransform)i Some Shape s new Some Shape(.)i g2d.draw(s);∥/绘制图形轮廓 g2d.£i11(s);//绘制填充图形 北大青鸟
10 Java 2D 中的基本绘图方法 public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D)g;//强制转换为Graphics2D g2d.setPaint(fillColorOrPattern); g2d.setStroke(penThicknessOrPattern); g2d.setComposite(someAlphaComposite); g2d.setFont(anyFont); g2d.setColor(anyColor); g2d.translate(...); g2d.rotate(...); g2d.scale(...); g2d.shear(...); g2d.setTransform(someAffineTransform); SomeShape s = new SomeShape(...); g2d.draw(s); // 绘制图形轮廓 g2d.fill(s); // 绘制填充图形 } 设置 画 笔参 数