Java标准教程:Java 2D绘图--第2章 从绘图开始
2017-10-12 21:31
495 查看
来源:http://blog.csdn.net/uoooo/article/details/6205056
Java 2D API 是强大并且复杂的。然而,大多数Java 2D API 只用到了封装在java.awt.Graphic 类中的功能的自己。本节描述了应用程序开发者最普遍的需要。其他在后续的高级主题中描述。
大多数Graphics 类可以分成以下的基本部分:
l 绘制和填充方法,可以让您渲染基本的形状,文本,图像
l 属性设置方法,影响如何绘制和填充。
setFont 和setColor 这种方法定义了如何填充方法渲染。
下图展示了这些方法如何与graphic 对象关联:
绘图方法包括:
l drawString :绘制文本
g.drawString("Hello", 10, 10);
l drawImage :绘制图像
l drawLine,
drawArc, drawRect, drawOval, drawPolygon :绘制几何图形:
根据您的需求,您可以选择Graphics 类中的一些方法,基于下列条件:
l 您是否想在指定的位置使用图像原来的大小或规模填充给定的矩形。
l 您是否想填充图像的透明区域或保持他们透明。
Fill 方法作用于集合形状,包括fillArc, fillRect, fillOval, fillPolygon 。
当绘制文本或图像的线时,记住2D 图形的每个点通过它的x 和y 坐标决定。所有的draw 和fill 方法需要文本或图像是否被渲染的信息。
例如,要画一条线,应用程序调用下列方法:
在代码中(x1, y1) 时线的开始点,(x2, y2) 时线的终点。
所以画水平线的代码如下:
下面的例子组合了所有提到的技术。移动滑块展示不同的天气类型。
WeatherWizard demo 使用JSlider 组件以及很多图像功能生成和展示特定的天气类型。关于JSlider 类的更多用法,请参考Swing 教程中的如何使用Sliders 一节。
WeatherPainter 类的paint 方法实现了图像特性。以下代码使用setupWeatherReport() 绘制图像。
setFont 和drawString 方法渲染了温度和天气条件。
fillRect 方法允许您使用指定颜色绘制矩形。
您可以通过修改WeatherWizard demo 的方法改变图像内容。例如,使用fillRoundRect 取代fillRect ,或者使用其他字体。
Java 2D API 是强大并且复杂的。然而,大多数Java 2D API 只用到了封装在java.awt.Graphic 类中的功能的自己。本节描述了应用程序开发者最普遍的需要。其他在后续的高级主题中描述。
大多数Graphics 类可以分成以下的基本部分:
l 绘制和填充方法,可以让您渲染基本的形状,文本,图像
l 属性设置方法,影响如何绘制和填充。
setFont 和setColor 这种方法定义了如何填充方法渲染。
下图展示了这些方法如何与graphic 对象关联:
绘图方法包括:
l drawString :绘制文本
g.drawString("Hello", 10, 10);
l drawImage :绘制图像
g.drawImage(img, 0, 0, width, height, 0, 0, imageWidth, imageHeight, null); |
l drawLine,
drawArc, drawRect, drawOval, drawPolygon :绘制几何图形:
g2.draw(new Line2D.Double(0, 0, 30, 40)); |
根据您的需求,您可以选择Graphics 类中的一些方法,基于下列条件:
l 您是否想在指定的位置使用图像原来的大小或规模填充给定的矩形。
l 您是否想填充图像的透明区域或保持他们透明。
Fill 方法作用于集合形状,包括fillArc, fillRect, fillOval, fillPolygon 。
当绘制文本或图像的线时,记住2D 图形的每个点通过它的x 和y 坐标决定。所有的draw 和fill 方法需要文本或图像是否被渲染的信息。
例如,要画一条线,应用程序调用下列方法:
java.awt.Graphics.drawLine(int x1, int y1, int x2, int y2) |
在代码中(x1, y1) 时线的开始点,(x2, y2) 时线的终点。
所以画水平线的代码如下:
Graphics.drawLine(20, 100, 120, 100); |
下面的例子组合了所有提到的技术。移动滑块展示不同的天气类型。
WeatherWizard demo 使用JSlider 组件以及很多图像功能生成和展示特定的天气类型。关于JSlider 类的更多用法,请参考Swing 教程中的如何使用Sliders 一节。
WeatherPainter 类的paint 方法实现了图像特性。以下代码使用setupWeatherReport() 绘制图像。
... origComposite = g2.getComposite(); if (alpha0 != null) g2.setComposite(alpha0); g2.drawImage(img0, 0, 0, size.width, size.height, 0, 0, img0.getWidth(null), img0.getHeight(null), null); if (img1 != null) { if (alpha1 != null) g2.setComposite(alpha1); g2.drawImage(img1, 0, 0, size.width, size.height, 0, 0, img1.getWidth(null), img1.getHeight(null), null); } ... |
setFont 和drawString 方法渲染了温度和天气条件。
... // Freezing, Cold, Cool, Warm, Hot, // Blue, Green, Yellow, Orange, Red Font font = new Font("Serif", Font.PLAIN, 36); g.setFont(font); String tempString = feels + " " + temperature+"F"; FontRenderContext frc = ((Graphics2D)g).getFontRenderContext(); ... g.setColor(textColor); int xTextTemp = rX-(int)boundsTemp.getX(); int yTextTemp = rY-(int)boundsTemp.getY(); g.drawString(tempString, xTextTemp, yTextTemp); int xTextCond = rX-(int)boundsCond.getX(); int yTextCond = rY-(int)boundsCond.getY() + (int)boundsTemp.getHeight(); g.drawString(condStr, xTextCond, yTextCond); |
fillRect 方法允许您使用指定颜色绘制矩形。
... Rectangle2D boundsTemp = font.getStringBounds(tempString, frc); Rectangle2D boundsCond = font.getStringBounds(condStr, frc); int wText = Math.max((int)boundsTemp.getWidth(), (int)boundsCond.getWidth()); int hText = (int)boundsTemp.getHeight() + (int)boundsCond.getHeight(); int rX = (size.width-wText)/2; int rY = (size.height-hText)/2; g.setColor(Color.LIGHT_GRAY); g2.fillRect(rX, rY, wText, hText); ... |
您可以通过修改WeatherWizard demo 的方法改变图像内容。例如,使用fillRoundRect 取代fillRect ,或者使用其他字体。
相关文章推荐
- Java标准教程:Java 2D绘图--第2章 从绘图开始
- Java标准教程:Java 2D绘图--第2章 从绘图开始
- Java标准教程:Java 2D绘图--第1章 Java 2d API概念概述
- Java标准教程:Java 2D绘图--第3章 基本几何图形
- Java标准教程:Java 2D绘图--第3章 基本几何图形
- java2d绘图教程
- Java标准教程:Java 2D绘图--第5章 使用图像
- Java标准教程:Java 2D绘图--第1章 Java 2d API概念概述
- Java标准教程:Java 2D绘图--第1章 Java 2d API概念概述
- Java标准教程:Java 2D绘图--第4章 使用Text API
- Java标准教程:Java 2D绘图--第3章 基本几何图形
- Java标准教程:Java 2D绘图--第4章 使用Text API
- Java标准教程:Java 2D绘图--第5章 使用图像
- 【Java Tutorial】: Getting Started(开始入门)【官方原版教程】
- emWin 2天速成实例教程003_Framewin和Window窗口控件和2D绘图
- Python开发环境Wing IDE使用教程之matplotlib 2D绘图库代码调试技巧
- Android学习教程之2D绘图基础及绘制太极图
- [Qt教程] 第20篇 2D绘图(十)图形视图框架(下)
- Java的绘图世界--Java 2D
- emWin 2天速成实例教程003_Framewin和Window窗口控件和2D绘图