java 绘图
Java的Graphics类进行绘图的方法详解
Java的Graphics类进⾏绘图的⽅法详解Graphics类提供基本绘图⽅法,Graphics2D类提供更强⼤的绘图能⼒。
Graphics类提供基本的⼏何图形绘制⽅法,主要有:画线段、画矩形、画圆、画带颜⾊的图形、画椭圆、画圆弧、画多边形等。
1. 画线在窗⼝画⼀条线段,可以使⽤Graphics类的drawLine()⽅法:drawLine(int x1,int y1,int x2,int y2) 例如,以下代码在点(3,3)与点(50,50)之间画线段,在点(100,100)处画⼀个点。
g.drawLine(3,3,50,50);//画⼀条线段g.drawLine(100,100,100,100);//画⼀个点。
2. 画矩形有两种矩形:普通型和圆⾓型。
(1) 画普通矩形有两个⽅法:drawRect(int x,int y,int width,int height):画线框围起来的矩形。
其中参数x和y指定左上⾓的位置,参数width和height是矩形的宽和⾼。
fillRect(int x,int y,int width,int height):是⽤预定的颜⾊填充⼀个矩形,得到⼀个着⾊的矩形块。
以下代码是画矩形的例⼦:g.drawRect(80,100,40,25);//画线框g.setColor(Color.yellow);g.fillRect(20,70,20,30);//画着⾊块(2)画圆⾓矩形也有两个⽅法:drawRoundRect(int x,int y,int width, int height, int arcWidth, int arcHeight):是⽤线围起来的圆⾓矩形。
其中参数x和y指定矩形左上⾓的位置;参数width和heigth是矩形的宽和⾼;arcWidth和arcHeight分别是圆⾓弧的横向直径和圆⾓弧的纵向直径。
fillRoundRect(int x,int y,int width,int height,int arcWidth,int archeight):是⽤预定的颜⾊填充的圆⾓矩形。
java createdrawingpatriarch 使用实例
java createdrawingpatriarch 使用实例Java中的createdrawingpatriarch方法用于创建Sheet的绘图管理器,可以对Sheet进行绘图操作。
绘图管理器中可以添加图形、绘制文本、设置填充颜色等,非常灵活实用。
本文将一步一步回答“java createdrawingpatriarch 使用实例”。
第一步:了解createdrawingpatriarch方法的基本用法在开始实例之前,我们需要了解createdrawingpatriarch方法的基本用法。
该方法是在Workbook接口中定义的,用于在Sheet中创建一个绘图管理器。
绘图管理器可以通过getCreationHelper().createDrawingPatriarch()方法来获取。
接下来的实例中,我们将使用POI库来操作Excel文件,具体使用步骤如下:1. 创建一个Workbook对象:Workbook workbook = new XSSFWorkbook();2. 创建一个Sheet对象:Sheet sheet = workbook.createSheet("Sheet1");3. 获取绘图管理器对象:Drawing drawing = sheet.createDrawingPatriarch();第二步:创建简单的图形下面我们来创建一个简单的图形,以便更好地理解createdrawingpatriarch方法的使用。
我们将创建一个圆形,并设置其位置和大小,代码如下:1. 创建一个绘图对象:XSSFDrawing drawing = (XSSFDrawing)sheet.createDrawingPatriarch();2. 定义圆形的位置和大小:int x = 100; 圆心的横坐标int y = 100; 圆心的纵坐标int width = 100; 圆的宽度int height = 100; 圆的高度3. 绘制圆形:XSSFClientAnchor anchor = drawing.createAnchor(x, y, x + width, y + height, 0, 0, 0, 0);XSSFSimpleShape circle = drawing.createSimpleShape(anchor); circle.setShapeType(ShapeTypes.ELLIPSE);第三步:绘制文本除了图形,我们还可以在Sheet中绘制文本。
Java双缓冲绘图技术
2 .方 椭 圆边 界 矩 形 的 左 上 角 坐 标
o aX2 = r cX , vl et o aY2 = o aY + rc Heg t ; vl vl 1 e t ih
1 Coor iC l r= C l r R 4: l l oo fl o o . ED;
1 : 5
1 :/ 6 /计算椭圆的绘制参数
1 : p bi odc lua e aC o dn t ) 7 u l v i ac lt Ov lo r ia e{ { c
1 : o aV i t = t i. e t it ; v lV d h 8 h s r c W d h
1 : it v l i h = 4 ; 1 n o a Heg t 0
1 : it v I ,o aY1 o aX ,o aY2 v l it 2 n aX1 v l , v l 2 v l ,o aW d h; o
1 : C lr u l e oo 3 o tn C lr=C lr LG T oo i oo . I H - A ; R Y
Jv 最 初 在 互 联 网 上 的 流 行 ,很 大 程 度 上 归 功 于 Jv p aa aaA —
pe。Jv 对 于 图 形 的 处 理 应 用 就 是 从 A pe 开 始 的 。 由 于 l t aa pl t
矩 形 的 高 度 以及 椭 圆 的 高 度 就 可 以 绘 制 一个 圆 柱体 了 。 C l d rj a 示 了 如 何 利 用 上 述 方 法 来 绘 制 一 个 圆 柱 yi e.a 演 n v 体 ,程 序 使 用 了 以下 几 个 方 法 : 1 acl e vloriae . l a O a odnt:利 用 上 面 的 关 系 公 式 计 算 上 、 ut C
Java程序设计——12图形绘制
unitsImage
绘制图像-2
• drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
– 将img中的一个矩形区域绘制到当前画布的一个矩形区域,且可拉伸。 – 透明的部分不绘制(gif图片可以指定一个透明色),用于绘制不规则图像。
赵志崑
输出文字
• 将字符串输出到特定位置:
– void drawString(String str, int x, int y)
(x,y) 见TextExample.java g.drawString("Hello World!",50,50); g.drawString("世界你好!",50,100);
150
赵志崑
设置颜色
• void setColor(Color c):将当前画笔颜色设置为c。 • Color getColor():读取当前画笔颜色。 • 颜色的构造: – 构造函数Color(int r, int g, int b):参数为红、绿、蓝的值(0-255)。 – 直接使用Color类中的静态对象:如Color.blue, Color.yellow, Color.orange, ……
– style:字体形式,为Font.PLAIN,Font.BOLD,Font.ITALIC。 – size:字体的高度,单位为像素。
• 这些设置字体的方法同样可以应用于组件上显示的字体。
见FontExample.java public void paintComponent(Graphics g) { super.paintComponent(g); g.setFont(new Font(fontName,fontStyle,fontSize)); g.drawString("Hello World!",50,50); g.drawString("世界你好!",50,100); }
第14章绘图程序设计(第4版)
绘图程序设计
本章主要内容
绘图类 如何获取“绘图笔” 显示和重画图形的方法
14.1 绘图类
Java语言绘制图形时,采用以像素为单位的坐标 系统,默认时窗口的最左上角坐标是原点(0,0) ,向右为x轴方向,向下为y轴方向,坐标系统内 的任一点用(x,y)来表示。通常坐标系统是相对 于Java程序窗口而言的,也就是说,原点位于 Java程序窗口的左上角,且包括窗口的标题栏和 窗口的边界。如教材中图14.1所示。富的绘图方法,其中大 部分对图形、文本、图像的操作方法都定义在 Graphics类中。并不需要直接使用new运算符来 创建一个Graphics类的对象,而是通过 getGraphics()方法来取得。 可以认为组件就是一张纸(画布),而Graphics对 象就是绘图用的画笔。 Graphics类是绘图的核心,教材中表14.1给出了 Graphics类的常用方法。
14.1 绘图类
例如,若要在组件上画一个圆,首先要获取绘图 笔g,然后再调用Graphics类所提供的画圆方法 drawOval()进行绘制,其语句如下: Graphics g=getGraphics(); g.drawOval(100,100,50,50);
14.1 绘图类
为了能在组件上绘图,Java在JComponent类中声 明了paintComponent()和repaint()方法用于显 示和重画图形。 图形显示 用于显示图形的方法是JComponent类的 paintComponent()方法 重画图形 用于对组件上的图形进行重画可以使用 repaint()方法
14.2 绘图程序设计
通过例 14.1-14.4来说明绘图应用程序的设计 方法,读者可以通过分析实例来掌握绘图程序设 计的技巧。
javapaint方法
javapaint方法在Java中,可以使用paint方法来实现对组件进行绘制的功能。
paint方法是Swing组件中的一个方法,用于进行组件的绘制操作。
下面将详细介绍Java的paint方法。
首先,paint方法是在组件需要被重绘时由Java虚拟机自动调用的,应用程序通常无需自己调用paint方法。
在组件首次显示时或需要进行重绘时,paint方法将自动被调用。
paint方法的方法签名如下:```public void paint(Graphics g)```paint方法的参数是一个Graphics对象,它提供了一系列的绘图方法用于完成绘制操作。
在paint方法中,通常需要完成以下几个步骤:1. 获取Graphics对象:用于绘制的Graphics对象可以通过paint方法的参数获取,此时可以使用Graphics对象的各种方法来完成绘制操作。
2. 设置绘图属性:在开始绘制之前,通常需要设置一些绘画属性,比如绘图颜色、线条粗细等。
Graphics对象提供了一系列用于设置绘画属性的方法,比如setColor、setStroke等。
3. 进行绘制操作:在绘制之前,需要确定绘制的内容和位置。
根据需要,可以使用Graphics对象的各种绘图方法,如drawLine、drawRect、fillRect等来绘制需要的图形。
4. 释放资源:绘制操作完成后,通常需要释放绘图资源,以便其他组件或画布进行绘制操作。
可以通过Graphics对象的dispose方法来释放绘图资源。
下面是一个简单的示例代码,展示了如何在一个JPanel类中使用paint方法进行绘制操作:```javaimport javax.swing.*;import java.awt.*;public class MyPanel extends JPanelpublic void paint(Graphics g)super.paint(g);//设置绘图属性g.setColor(Color.RED);//绘制操作g.drawLine(10, 10, 100, 100);g.drawRect(50, 50, 100, 100);g.fillRect(200, 200, 100, 100);//释放资源g.dispose(;}```在上面的代码中,首先继承了JPanel类,并重写了其paint方法。
java fillrect方法
Java中的fillRect方法是用来绘制填充矩形的一个重要方法。
在Java 的图形界面编程中,经常需要使用各种图形绘制方法来展示数据、制作游戏界面或者设计用户界面。
fillRect方法就是其中之一,它可以绘制一个填充颜色的矩形,是非常常用的一种绘制方法。
1. fillRect方法的基本语法在Java中,fillRect方法的基本语法如下所示:```javavoid fillRect(int x, int y, int width, int height)```其中,x和y表示矩形的左上角的坐标,width和height表示矩形的宽和高。
这个方法的作用是绘制一个以(x, y)为左上角,宽为width,高为height的填充矩形。
2. fillRect方法的具体用法fillRect方法通常会和其他图形绘制方法一起使用,比如在画布上绘制一个矩形作为背景,或者在游戏界面中绘制各种各样的图形。
在使用fillRect方法时,需要先获取到Graphics对象,然后调用该对象的fillRect方法来进行绘制。
3. fillRect方法的示例代码下面是一个简单的示例代码,演示了如何使用fillRect方法在一个窗口上绘制一个红色的填充矩形:```javaimport java.awt.*;import javax.swing.*;public class FillRectExample extends JFrame {public FillRectExample() {setTitle("FillRect Example");setSize(300, 200);setDefaultCloseOperation(EXIT_ON_CLOSE);setVisible(true);}public void p本人nt(Graphics g) {g.setColor(Color.RED);g.fillRect(50, 50, 200, 100);}public static void m本人n(String[] args) {new FillRectExample();}}```在这个示例代码中,我们首先创建一个继承自JFrame的窗口类FillRectExample。
java教程之Java绘图
(4) fillRoundRect() 调 用 格 式 为 : fillRoundRect(int x,int y,int width,int height,int arcW,int arcH) 方法作用:以(x,y)为矩形的左上角顶点,绘制一 个宽、高分别为width和height可有填充色的圆角 矩形。 方法中的参数解释如下:x,y——所绘矩形左上角坐 标 。 Width,height — — 所 绘 矩 形 的 宽 和 高 。 arcW,arcH分别为所绘矩形圆角的宽和高。 与drawRoundRect()的区别:该方法所绘制的圆角矩 形中可有填充色。 该方法的使用举例如下:
例9.10 import java.applet.*; import java.awt.*; public class Draw_arc extends Applet { public void paint(Graphics g) { g.setColor(Color.red); g.fillArc(0,40,100,100,0,180); g.fillArc(300,40,30,100,0,360); g.fillArc(200,100,50,50,0,270); } }
(2)、fillArc() 调 用 格 式 : fillArc(int x,int y,int width,int height,int anglestart,int angleend) 作用:绘制一段着色圆弧(扇形)。 参数解释:x,y——该圆弧外接矩形的左上角 坐标。Width,height——该圆弧外接矩形 的宽和高。Anglestart,angleend——该 圆弧的起始角和终止角,单位为“度”。 “0”(零)度角为x轴的正方向。正的角 度按逆时针方向旋转;负的角度按顺时针 方向旋转。 该方法举例如下:
graphics类的drawimage方法
graphics类的drawimage方法Graphics类是Java编程语言中用于绘制图形的一个重要类。
其中,drawImage方法是Graphics类中的一个用于绘制图像的方法。
本文将以drawImage方法为主题,详细介绍该方法的使用和一步一步的操作过程。
一、Graphics类和drawImage方法的概述在Java中,Graphics类是一个抽象类,它提供了一系列绘制图形和图像的方法。
Graphics类的对象可以通过GUI组件的getGraphics()方法来获得,通过该对象可以在组件上进行绘图操作。
而drawImage方法则是其中的一个重要的方法,用于在指定位置绘制图像。
二、drawImage方法的语法和参数drawImage方法的语法如下:void drawImage(Image img, int x, int y, ImageObserver observer)其中,参数说明如下:- img:要绘制的图像对象。
- x:图像的横坐标。
- y:图像的纵坐标。
- observer:图像观察者,用于在图像加载完成后通知应用程序。
三、使用drawImage方法绘制图像的步骤接下来,我们将一步一步地介绍使用drawImage方法绘制图像的步骤。
步骤1:创建一个用于绘图的组件首先,我们需要创建一个Swing或AWT组件,用于绘制图像。
可以是JPanel、JFrame等。
javaimport javax.swing.*;创建一个JPanel,用于绘制图像JPanel panel = new JPanel();步骤2:获取绘图对象其次,我们需要通过该组件的getGraphics()方法获取一个Graphics对象,用于进行绘图操作。
javaGraphics g = panel.getGraphics();步骤3:加载图像文件然后,我们需要加载一个图像文件,可以使用ImageIO类的read()方法来实现。
Java 菜单按钮控制绘图程序
目录一、程序开发背景 (1)二、程序分析与设计 (1)(一)程序功能要求 (1)(二)程序模块结构设计 (1)1、程序流程 (1)2、模块化功能结构分析 (2)三、程序的设计与实现 (3)(一)图形界面 (3)(二)图形界面的实现 (3)四、系统测试 (4)五、总结 (10)六、附件(程序代码) (11)菜单按钮控制绘图程序一、程序开发背景进一步巩固Java课程中关于图形用户界面具体实现的知识,使用Eclipse开发平台来实现“菜单按钮控制绘图”课题。
二、程序分析与设计为了复习和巩固Java程序设计基础,和进一步理解和掌握Java 语言,学生要用Java语言设计一个完整的应用程序,使学生综合应用所学知识完成软件的分析、设计、调试和总结,可加深和巩固对理论教学和实验教学内容的掌握,使学生进一步掌握使用面向对象技术开发完整系统的方法。
(一)程序功能要求功能要求:实现简单绘图功能,具体要求:画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。
(二)程序模块结构设计1、程序流程用菜单和按钮控制绘图流程如图一所示图一菜单和按钮控制绘图流程图绘制图形:(1)直线(2)空心椭圆(3)实心椭圆(4)空心矩形(5)实心矩形(6)多边形2、模块化功能结构分析设计程序功能模块如图二所示用菜单和按钮控制绘图程序菜按单钮绘绘制制图图形形图二功能模块图菜单绘制图形要求:主菜单:直线、椭圆、矩形、多边形菜单项:(1)直线:直线(2)椭圆:实心椭圆、空心椭圆(3)矩形:实心矩形、空心矩形(4)多边形:多边形按钮项:直线、空心椭圆、实心椭圆、空心矩形,实心矩形、多边形三、程序的设计与实现(一)图形界面图形界面用于显示绘制的图形,界面主要包括4 个上标签、6个下标签和图形显示区域,其中上标签“椭圆”包含“实心椭圆”、“空心椭圆”两个子标签,“矩形”中又包含“实心矩形”,“空心矩形”两个子按钮。
(二)图形界面的实现图形界面的具体实现import java.awt.*;import java.awt.event.*;import javax.swing.*;以上代码用于导入以下程序所用到的包。
Java 常用图形的绘制与填充
shape[1][4] = new CubicCurve2D.Double(0,0,w/2,h,w, h/2,w,h); //三次曲线
//绘制几何图形的名称
String[][] shapeName = {{"直线","矩形","圆角矩形","圆","椭圆"},{"开弧","弓形","饼形","二次曲线","三次曲线"}};
import java.awt.event.*;
import java.awt.geom.*;
(3)创建GraphicsShapeDemo类的构造方法,设定窗口的大小、标题并往窗口中添加内容窗格,代码如下所示。
GraphicsShapeDemo() {
super("常用图形的绘制与填充"); //调用父类构造器设置窗口标题栏
J
(1)在【文件】菜单下选择【新建】|【类】命令,在弹出的对话框【新建Java类】中,创建GraphicsShapeDemo.java文件,如图11-15所示。
图11-15新建Java类
(2)添加程序中要用到的程序包,代码如下所示。
import java.awt.*;
import javax.swing.*;
int cirlceD = Math.min(w, h); //圆的直径
Shape[][] shape = new Shape[2][5];
shape[0][0] = new Line2D.Float(0,0,w,h); //直线
绘图java绘图绘制圆与多边形drawOvalfillOvaldrawArcfillArc
绘制圆与多边形
椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height),
绘制实心椭圆形的方法是 fillOval(x ,y , width , height)。 其中x、y、width、height为整型参数。
软件编程基础
绘制圆与多边形
圆角矩形 绘制圆角矩形的方法是 drawRoundRect(x ,y , width , height , startAngle ,arcAngle), 绘制实心圆角矩形的方法是 fillRoundRect(x ,y , width , height , arcWidth ,arcHeight), 其中x、y、width、height、arcWidth、arcHeight为整型 参数。
它有4个参数: x、y分别为包围椭圆的矩形左上角端点的x、y轴坐标; width为椭圆形的宽度; height为椭圆形的高度。
注意:当width、height的值相等时,绘制的图形为正圆形。
软件编程基础
绘制圆与多边形
例: import java.awt.*; import java.applet.Applet; public class Oval extends Applet {
软件编程基础
绘制圆与多边形
例: import java.awt.*; import java.applet.Applet; public class Arc extends Applet {
public void paint(Graphics g) {
g.drawArc(50,50,50,50,30,150); //参数g调用绘制弧线的方法drawArc() g.fillArc(100,50,100,50,0,-90); //参数g调用绘制扇形的方法fillArc() } }
java 贝塞尔曲线 笔迹
java 贝塞尔曲线笔迹贝塞尔曲线是一种数学曲线,常用于图形设计、计算机图形学和动画等领域。
在Java中,你可以使用贝塞尔曲线来绘制平滑的笔迹效果。
下面我将从多个角度来回答你关于Java贝塞尔曲线和笔迹的问题。
首先,让我们了解一下贝塞尔曲线的基本概念。
贝塞尔曲线由控制点和插值点组成。
控制点用于控制曲线的形状,而插值点则是曲线上的点。
贝塞尔曲线可以是一阶、二阶、三阶或更高阶的曲线,阶数越高,曲线的灵活性越大。
在Java中,你可以使用Java的绘图API来绘制贝塞尔曲线。
Java提供了Graphics类和Graphics2D类来进行绘图操作。
你可以使用Graphics2D类的draw方法来绘制贝塞尔曲线。
在绘制贝塞尔曲线之前,你需要确定曲线的控制点和插值点。
控制点可以通过鼠标点击或者其他方式来确定,而插值点则可以通过计算来确定。
一般来说,贝塞尔曲线的控制点越多,曲线的形状越复杂,笔迹效果也会更加平滑。
在确定了控制点和插值点之后,你可以使用Graphics2D类的draw方法来绘制贝塞尔曲线。
你需要将控制点和插值点作为参数传递给draw方法,然后调用该方法即可绘制曲线。
除了绘制贝塞尔曲线,你还可以通过调整控制点的位置来改变曲线的形状,从而实现不同的笔迹效果。
你可以根据需要在绘制过程中动态改变控制点的位置,从而实现平滑的笔迹效果。
总结起来,Java提供了绘制贝塞尔曲线的功能,你可以使用Graphics2D类的draw方法来绘制贝塞尔曲线,并通过调整控制点的位置来改变曲线的形状,实现不同的笔迹效果。
希望以上回答能够满足你的需求。
javadrawimage的用法
javadrawimage的用法javadrawimage是Java中用于绘制图像的一个方法。
它可以用于在Java应用程序中绘制图像,以及在GUI中显示图像。
javadrawimage的用法非常简单,只需要使用Graphics对象的drawImage()方法即可。
drawImage()方法接受三个参数:要绘制的图像对象、x坐标和y坐标。
例如,以下代码片段演示了如何使用javadrawimage方法将图像绘制在Java应用程序中:```import java.awt.Graphics;import java.awt.Image;import javax.swing.JFrame;import javax.swing.JPanel;public class DrawImage extends JPanel {private Image image;public DrawImage() {image =Toolkit.getDefaultToolkit().getImage('image.png');}public void paint(Graphics g) {g.drawImage(image, 0, 0, this);}public static void main(String[] args) {JFrame frame = new JFrame('Draw Image');frame.getContentPane().add(new DrawImage());frame.setSize(300, 300);frame.setVisible(true);}}```在上面的代码中,我们创建了一个继承自JPanel的类DrawImage,并覆盖了paint()方法,在其中调用了Graphics对象的drawImage()方法。
在main()方法中,我们创建了一个JFrame对象,并将DrawImage 对象添加到其中。
java createdrawingpatriarch 使用实例 -回复
java createdrawingpatriarch 使用实例-回复Java中的createdrawingpatriarch方法是在Apache POI库中使用的一种方法,它用于创建Patriarch对象,该对象用于在Excel文档中添加绘图层。
通过创建Patriarch对象,我们可以在工作表中添加图形、形状、图片和文本框等。
本文将详细介绍java createdrawingpatriarch方法的使用实例,通过一步一步地回答以下问题:1. 什么是Apache POI库?2. 什么是Patriarch对象?3. 如何使用createdrawingpatriarch方法创建Patriarch对象?4. 怎样在已有的Excel文档中添加绘图层?1. 什么是Apache POI库?Apache POI是一种用于操作Microsoft Office文件的开源Java库。
它提供了一组API,可让我们从Java代码中读取、创建和修改Excel、Word 和PowerPoint等Office文档。
通过Apache POI库,我们可以实现对Excel文档的批处理操作,如数据的读取、写入以及对样式、图表等的编辑。
2. 什么是Patriarch对象?Patriarch对象在Apache POI库中是用于管理绘图层的对象。
绘图层允许在Excel文档的工作表中添加各种图形元素,如形状、图片和文本框等。
Patriarch对象充当了绘图层的容器,我们可以通过Patriarch对象的方法来添加、删除和修改绘图层中的对象。
3. 如何使用createdrawingpatriarch方法创建Patriarch对象?在使用Apache POI库创建Patriarch对象之前,我们需要先创建一个工作表对象,然后通过该工作表对象的createDrawingPatriarch()方法来创建Patriarch对象。
下面是一个使用实例:import ermodel.*;public class CreateDrawingExample {public static void main(String[] args) {创建工作簿和工作表对象Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");创建Patriarch对象Drawing<?> drawing = sheet.createDrawingPatriarch();执行绘图操作...保存工作簿try {FileOutputStream fileOut = new FileOutputStream("sample.xlsx");workbook.write(fileOut);fileOut.close();} catch (IOException e) {e.printStackTrace();}}}在上面的代码中,我们首先创建了一个XSSFWorkbook对象作为工作簿,然后使用createSheet()方法创建了一个名为"Sheet1"的工作表。
java绘图(基于Graphics2D)
java绘图(基于Graphics2D)1.绘图基本操作请参考下⾯基础⽰例:1int width = 200, height = 250;2//创建图⽚对象3 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);4//基于图⽚对象打开绘图5 Graphics2D graphics = image.createGraphics();6//绘图逻辑 START (基于业务逻辑进⾏绘图处理)……78//绘制圆形9 graphics.setColor(Color.BLACK);10 Ellipse2D.Double ellipse = new Ellipse2D.Double(20, 20, 100, 100);11 graphics.draw(ellipse);1213// 绘图逻辑 END14//处理绘图15 graphics.dispose();16//将绘制好的图⽚写⼊到图⽚17 ImageIO.write(image, "png", new File("abc.png"));如上代码所⽰,使⽤java绘图基本操作流程如下: a.得到⼀个 BufferedImage ,可以是直接指定分辨率new⼀个空图⽚,也 b.基于此BufferedImage 创建⼀个绘图对象,使⽤createGraphics ⽅法,得 Graphics2D 实例 c.使⽤Graphics2D 实例进⾏画图,所有绘图坐标基于创建此Graphics2D 的BufferedImage。
⽰例中在图⽚上画了⼀个圆形。
d.调⽤Graphics2D 对象的 dispose() ⽅法,进⾏绘图处理,使绘图效果应⽤到BufferedImage 对象 e.使⽤ImageIO类的write函数将图⽚对象转换到⽂件或⼆进制流上⾯是使⽤java进⾏绘图的基本流程,其中步骤c涉及到很多绘图细节。
Java绘图之设置字型和颜色_Java教程
Java绘图之设置字型和颜色_Java教程Java绘图中,显示文字的方法主要有三种:(1)drawString(String str,int x,int y):在指定的位置显示字符串。
(2)drawChars(char data[],int offset,int length, int x, int y):在指定的位置显示字符数组中的文字,从字符数组的offset位置开始,最多显示length个字符。
(3)drawBytes(byte data[],int offset,int length,int x,int y), 在指定的位置显示字符数组中的文字,从字符数组的offset位置开始,最多显示length个字符。
这里给出的显示位置(x,y)为文字的基线的开始坐标,不是文字显示的矩形区域的左上角坐标。
文字字型有三个要素:∙字体:常用的字体有Times New Roman、Symbol、宋体、楷体等。
∙风格:常用的风格有三种:正常、粗体和斜体;分别用三个常量表示:Font.PLAIN(正常)、Font.BOLD(粗体)和Font.ITALIC(斜体)。
风格可以组合使用,例如,Font.BOLD+Font.ITALIC。
∙字号:字号是字的大小,单位是磅。
在Java语言中,用类Font对象字型。
Font类构造方法有:Font(String fontName,int style,int size),3个参数分别表示字体、风格和字号。
例如,代码:Font fnA = new Font(“细明本”,Font.PLAIN,12)设置的字型的是:细明体、正常风格,12磅字号。
Font类的其他常用方法:1.getStyle(),返回字体风格。
2.getSize(),返回字体大小。
3.getName(),返回字体名称。
4.isPlain(),测试字体是否是正常字体。
5.isBold(),测试字体是否是粗体。
6.isItalic(),测试字体是否是斜体。
java canvas用法
java canvas用法在Java中,`Canvas`类通常是与图形和绘图相关的图形库的一部分,例如在Java的AWT (Abstract Window Toolkit)或者JavaFX中。
下面我会提供一个简单的示例,演示如何在JavaFX 中使用`Canvas`进行绘图。
```javaimport javafx.application.Application;import javafx.scene.Scene;import javafx.scene.canvas.Canvas;import javafx.scene.canvas.GraphicsContext;import yout.StackPane;import javafx.stage.Stage;public class CanvasExample extends Application {@Overridepublic void start(Stage primaryStage) {// 创建一个CanvasCanvas canvas = new Canvas(400, 400);// 获取GraphicsContext,用于绘图GraphicsContext gc = canvas.getGraphicsContext2D();// 在Canvas上绘制一个矩形gc.strokeRect(50, 50, 300, 200);// 在Canvas上绘制一条线gc.strokeLine(50, 50, 350, 250);// 在Canvas上绘制一个圆形gc.strokeOval(100, 100, 200, 200);// 创建一个StackPane布局,并将Canvas添加到其中StackPane root = new StackPane();root.getChildren().add(canvas);// 创建一个Scene并设置Stage的SceneScene scene = new Scene(root, 400, 400);primaryStage.setScene(scene);// 设置Stage的标题primaryStage.setTitle("Canvas Example");// 显示StageprimaryStage.show();}public static void main(String[] args) {launch(args);}}```在这个示例中,我们使用JavaFX创建了一个简单的图形界面,其中包含一个`Canvas`,并在`Canvas`上绘制了一个矩形、一条线和一个圆形。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
知识要点:第一节Java 2D的增强功能概述、AWT图形能力的不足、Java 2D API第二节图形绘制的基本方法转换Graphics2D对象、Graphics 类特性、绘图的属性和基本编程方法第三节曲线问题的高级应用开发直线问题深入研究、贝塞尔(Bezier)曲线、自定义样条曲线编程、用户数据的曲线显示、曲线用Applet显示的数据来源问题第四节字符串的高级处理TextLayout类、LineMetrics类第五节构造几何形状2D几何形状的设计、构造型区域几何形状、变换、缓冲的图像第六节三维图形处理的设计技术透视投影、透视图形的显示、隐蔽面消除问题第七节同环境交互GraphicsEnvironment类、GraphicsDevice类、GraphicsConfiguration类第一节Java 2D的增强功能一、概述:由Sun公司与Adobe系统公司合作推出的Java 2D API,提供了一个功能强大而且非常灵活的二维图形框架。
Java 2D API扩展了java.awt包中定义的Graphics类和Image类,提供了高性能的二维图形、图像和文字,同时又维持了对现有AWT应用的兼容。
二、AWT图形能力的不足:在AWT 的初始实现中,图形能力并不十分完善。
因为开发JDK 是打算将其作为平台中立的实现平台,所以其原始的功能被限制于“最少公共功能”上,所有被支持的操作系统上保证提供这些公共功能;在Java 2D 出现之前,对绘制能力、字体操作和图像控制的支持非常少。
而对诸如用图案进行着色、形状操作以及图形变换之类的重要操作的支持则完全没有。
Java 2D 满足了跨平台实现中对这些功能以及其它功能的需求。
三、Java 2D API:它是JFC (Java Fundation Classes)的一员,加强了传统AWT(Abstract Windowing Toolkit )的描绘功能。
在JDK1.2中已经支援Java 2D 的使用。
透过Java 2D API ,程序员可以轻松地描绘出任意的几何图形、运用不同的填色效果、对图形做旋转(rotate)、缩放(scale)、扭曲(shear)等。
如图所示,程序员透过2D API所提供的功能,简单地利用不同类型的线或是填色效果绘出统计图,以区分出不同的资料。
它们是基于Graphics2D类的绘图功能,是对AWT中的Graphics类的进一步的扩展和增强。
主要体现在:1。
对渲染质量的控制:消除锯齿以平滑绘制对象的边缘2.裁剪、合成和透明度:它们允许使用任意形状来限定绘制操作的边界。
它们还提供对图形进行分层以及控制透明度和不透明度的能力。
3.控制和填充简单及复杂的形状:这种功能提供了一个Stroke 代理和一个Paint 代理,前者定义用来绘制形状轮廓的笔(定义绘制的笔的宽度和样式),后者允许用纯色、渐变色和图案来填充形状。
4。
图像处理和变换:Java 2D 同Java 高级图像API(Java Advanced Imaging API (JAI))协作,支持用大量图形格式处理复杂的图像。
Java 2D 还为您提供了修改图像、形状和字体字符的变换能力。
5。
特殊的填充方式,如梯度或者图案6.高级字体处理和字符串格式化:允许象操作任何其它图形形状一样操作字体字符。
除此以外,可以象文字处理程序一样,通过为String 中的字符应用属性和样式信息来创建格式化文本。
java.awt.geom 包中的Areas类支援联集(union)、交集(intersection)、差集(subtraction )、Exclusive OR (XOR)等布尔运算。
最後,AffineTransform 类别则提供图形物件做Scale (比例)、Shear(剪裁)、Rotate(旋转)等座标上的转换。
第二节图形绘制的基本方法一、转换Graphics2D对象绘制图形时,可以在Graphics对象或者Graphics2D对象上进行,它们都代表了需要绘图的区域,选择那个取决于是否要使用所增加的Java2D的图形功能。
但要注意的是,所有的Java2D图形操作都必须在Graphics2D对象上调用。
Graphics2D是Graphics的子类,同样包含在java.awt包中。
public void paintComponent(Graphics comp){ Graphics2D comp2D=(Graphics2D)comp;}或者public void paint (Graphics comp){ Graphics2D comp2D=(Graphics2D)comp;}二、Graphics 类特性Graphics 类支持几种确定图形环境状态的特性。
以下列出了部分特性:1)Color:当前绘制颜色,它属于java.awt.Color 类型。
所有的绘制、着色和纯文本输出都将以指定的颜色显示。
2)Font:当前字体,它属于java.awt.Font 类型。
它是将用于所有纯文本输出的字体。
3)Clip:java.awt.Shape 类型的对象,它充当用来定义几何形状的接口。
该特性包含的形状定义了图形环境的区域,绘制将作用于该区域。
通常情况下,这一形状与整个图形环境相同,但也并不一定如此。
4)ClipBounds:java.awt.Rectangle 对象,它表示将包围由Clip 特性定义的Shape 的最小矩形。
它是只读特性。
5)FontMetrics:java.awt.FontMetrics 类型的只读特性。
该对象含有关于图形环境中当前起作用的Font 的信息。
如同我们将看到的那样,获取此信息的这种机制已被LineMetrics 类所取代6)Paint Mode:该特性控制环境使用当前颜色的方式。
如果调用了setPaintMode() 方法,那么所有绘制操作都将使用当前颜色。
如果调用了setXORMode() 方法(该方法获取一个Color 类型的参数),那么就用指定的颜色对像素做“XOR”操作。
XOR 具有在重新绘制时恢复初始位模式的特性,因此它被用作橡皮擦除和动画操作。
三、绘图的属性和基本编程方法1)颜色Color类:没有变化。
2)填充方式:Paint(油漆桶)接口有几个具体的实现,它们允许用纯色、渐变色或图案来填充形状。
1,纯色填充(Color类):对java.awt.Color 类做了一些调整以实现Paint,并且可以用于纯色填充。
2,渐变色来填充(梯度填充GradientPaint类):java.awt.GradientPaint 类允许用线性颜色渐变色来填充形状,线性颜色渐变色允许在两个指定的Color 对象之间创建过渡。
可以将渐变色设置成“周期性的”,这将导致渐变色图案重复出现。
3,图案填充(纹理TexturePaint类):提供了java.awt.TexturePaint 类,它可以用由BufferedImage 描述的图案填充形状编程方法:使用Graphics2D类中的setPaint()方法并使用Paint对象作为其参数,但由于任何可以作为填充的类如GradientPaint、TexturePaint和Color都实现了Paint接口(该接口注意定义了在Graphics2D下的颜色填充方式),因此可以将它们作为参数。
如:public void paintComponent(Graphics comp){ Graphics2D comp2D=(Graphics2D)comp;GradientPaint pat=new GradientPaint(0f,0f,Color.white,100f,45f,Color.blue);comp2D.setPaint(pat);}3)设置笔的形状:Stroke 接口由java.awt.BasicStroke 类实现。
该类允许进行大量的选择以修改线的绘制细节。
可以编程指定BasicStroke 宽度,也可以指定对名为柱头和交点的路径上端点和交点的“装饰”。
现在也可以绘制点划线了,只须设置BasicStroke 的破折号属性即可。
在Graphics类中线条是一个点宽,而在Graphics2D中可以通过BasicStoke类中的setStroke()方法来设置。
其构造函数是BasicStroke(float width, int cap, int join)其中width指示线宽(缺省时为1.0)cap指示线的末端(包头,在BasicStroke类中定义出三个static 类型的常量如CAP_BUTT 没有包头()、CAP_ROUND圆包头()、CAP_SQUARE方包头()的样式join指示线段之间的拐角(在BasicStroke类中定义出三个static 类型的常量如JOIN_BEVEL ()、JOIN_MITER()、JOIN_ROUND()样式。
4)编程方法:public void paintComponent(Graphics comp){ Graphics2D comp2D=(Graphics2D)comp;BasicStroke pen=new BasicStroke(2.0f, BasicStroke .CAP_BUTT, BasicStroke .JOIN_ROUND);comp2D.setStroke (pen);}代码示例:float thick = 0.5f; //设置画刷的粗细为0.5BufferedImage bi = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);Graphics2D g = (Graphics2D)bi.getGraphics();Stroke stroke = g.getStroke(); //得到当前的画刷g.setStroke(new BasicStroke(thick, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND)); g.draw(new Line2D.Float(x1, y1, x2, y2)); 画线g.setStroke( stroke ); //将画刷复原5)创建要绘制的形状对象在Java2D中进行绘图时,不是采用对应的方法来实现,而是为要实现某中形状创建出相应的形状对象。
这可以通过使用java.awt.geom包中的类来定义所要创建的形状。
如线条Line2D.Float类、距形Rectangle2D.Float或者Rectangle2D.Double类、椭圆Ellipes2D.Float、圆弧Arc2D.Float类等。