JAVA基础教程————绘图
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的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标准教程:Java 2D绘图--第3章 基本几何图形

Java标准教程:Java 2D绘图--第3章基本几何图形在之前的课程中,您已经学习了绘图的基本概念,包括坐标系和graphic对象创建的基本信息。
现在,您将了解2D 绘图类的更详细的信息。
本科展示如何使用Graphics2D类绘制基本的几何图形和任意的形状,以及如何使用花哨的轮廓和填充风格展示图形。
这些主题分为以下几个章节。
●绘制基本几何图形:本节展示如何创建标准的集合图形,例如点,线,曲线,圆弧,矩形和椭圆。
●绘制任意图形:本节展示如何直接使用基本几何图形组合绘制任意形状,使用GeneralPath类进行绘制。
●填充和笔画:本节解释如何设置笔画和打印属性,控制应用到Shape对象和文本的轮廓和填充风格。
1.1 绘制基本几何图形Java 2D API提供很多类,定义了基本的几何对象,例如点,线,弧线和矩形。
这些几何类是java.awt.geom包的一部分。
PathIterator接口定义了从路径中获取元素的方法。
Shape接口提供了一组描述和解析几何路径的对象。
这个接口由GeneralPath类和其他几何类实现。
本节的所有例子中创建的几何图形都使用java.awt.geom,然后使用Graphics2D类进行渲染。
要得到Graphics2D对象,可以cast paint()方法的Graphics参数:1.1.1 点Point类创建了位于坐标系中(x, y)位置的点。
子类Point2D.Float和Point2D.Double提供了使用float和double精度存储点。
要创建位于坐标系(0, 0)的点,使用默认的构造函数Point2D.Double()。
您可以使用setLocation方法设按照下面的方法设置点的位置:●setLocation(double x, double y):使用double坐标值设置点的位置。
●setLocation(Point2D p):使用坐标系中的其他点设置位置。
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); }
JAVA自学教程(完整版)PPT课件(2024)

二分查找
针对有序数组,每次取中间元 素与目标元素比较,缩小查找 范围
12
03 面向对象编程基础
2024/1/27
13
类与对象的概念
类的定义
类是对象的模板,它定 义了对象的属性和方法 。
2024/1/27
对象的概念
对象是类的实例,具有 类定义的属性和行为。
类与对象的关系
类是对象的抽象描述, 而对象是类的具体实现 。
2024/1/27
32
Socket通信原理及示例
Socket通信原理
理解Socket通信的基本原理,掌握Socket 类和ServerSocket类的使用。
TCP编程
学习基于TCP协议的Socket通信,实现客户 端与服务器之间的数据传输。
多线程处理
掌握多线程在Socket通信中的应用,提高服 务器的并发处理能力。
TreeSet类的特点和使用
TreeSet是Set接口的另一个常用实现类,它基于红黑树实 现。TreeSet会对元素进行排序,因此它适用于需要排序的 场景。
26
Map接口及其实现类
01
Map接口的定义和特 点
Map接口表示一种键值对的映射关系 。Map中的每个元素都包含一个键和 一个值,键在Map中是唯一的。
学习ReentrantLock锁的使用,了解 公平锁与非公平锁的区别。
2024/1/27
等待/通知机制
掌握Object类的wait()、notify()和 notifyAll()方法的使用,实现线程间 的通信。
死锁与避免
了解死锁的概念及产生条件,学习如 何避免死锁的发生。
31
网络编程基础
网络编程概述
ArrayList类的特点和使用
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入门教程(一)PPT课件

运算符与控制流语句
运算符
Java支持多种运算符,如算术运算符(+、-、*、/、% )、关系运算符(==、!=、>、<、>=、<=)和逻辑 运算符(&&、||、!)等。
控制流语句
Java提供了多种控制流语句,如if语句、switch语句和 循环语句(for、while、do-while)等,用于控制程序 的执行流程。
1995年,Java正式发布,并成为一种独立的开发 平台。
2004年,Java SE 5.0版发布,引入了新特性如泛 型、for-each循环和自动装箱等。
java的应用领域
Web应用程序 开发
Java的Web开发技术, 如Servlet和JSP等,可 以轻松构建高效的Web 应用程序。
企业级应用
05
java开发环境配置
jdk的安装与配置
总结词
JDK是Java开发的核心工具包,需要安装并正确配置。
详细描述
JDK是Java Development Kit的缩写,是Java开发的核 心工具包,需要从Oracle官方网站下载并安装。在安装 过程中,需要选择适合自己系统的版本,并按照提示完 成安装过程。安装完成后,需要通过环境变量设置,将 JDK添加到系统路径中,以便在命令行或者其他IDE中直 接调用Java命令。
2023
java入门教程(一)ppt课件
目录
• java概述 • java基础知识 • java核心技术 • java常用类库 • java开发环境配置 • java入门案例——简易学生信息管理系统的实现
01
java概述
java的定义与特点
1
于开发跨平台应用程序和服务端应用程序等。
java画图课程设计

java画图课程设计一、教学目标本节课旨在让学生掌握Java基本绘图方法,能够使用Java编写简单的图形界面程序。
1.了解Java绘图的基本概念和方法。
2.掌握Java中常用的绘图类和方法。
3.理解图形界面程序的设计原理。
4.能够使用Java编写简单的图形界面程序。
5.能够灵活运用Java绘图方法,实现基本的图形绘制。
6.能够根据需求,设计并实现简单的图形界面程序。
情感态度价值观目标:1.培养学生对计算机编程的兴趣和热情。
2.培养学生解决问题的能力和创新精神。
3.培养学生团队协作和交流的能力。
二、教学内容本节课的教学内容主要包括Java绘图的基本概念和方法,以及图形界面程序的设计原理。
1.Java绘图基本概念和方法。
2.Java中常用的绘图类和方法。
3.图形界面程序的设计原理。
4.实例演示和练习。
三、教学方法本节课采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解Java绘图的基本概念和方法,以及图形界面程序的设计原理。
2.案例分析法:通过分析典型案例,让学生理解和掌握Java绘图的方法和技巧。
3.实验法:让学生通过实际操作,动手编写Java程序,巩固所学知识。
四、教学资源1.教材:《Java程序设计》。
2.参考书:《Java绘图教程》。
3.多媒体资料:PPT课件。
4.实验设备:计算机。
五、教学评估本节课的评估方式包括平时表现、作业和考试。
1.平时表现:通过课堂参与、提问和回答问题等方式,评估学生在课堂上的积极性和主动性。
2.作业:布置相关的绘图程序练习,评估学生对Java绘图方法的掌握程度。
3.考试:期末考试中包含Java绘图相关的题目,评估学生对Java绘图的全面理解和应用能力。
六、教学安排本节课的教学安排如下:1.教学进度:按照教材的章节顺序,逐步讲解Java绘图的基本概念和方法。
2.教学时间:每节课45分钟,其中30分钟用于讲授和案例分析,15分钟用于实验和实践。
3.教学地点:计算机实验室,确保学生能够直接进行绘图程序的编写和运行。
常用绘图选项说明

常用绘图选项说明1.视图注解VIEW_NOTE——分两种一般选:std_din2.视图比例的显示形式view_scale_format 分三种形式:一般选:ratio_colon3.视图比例的分母view_scale_denominator1/X4.剖视尺寸线箭头箭头长度:crossec_arrow_length 2.5箭头宽度:crossec_arrow_width 1箭头形式:crossec_arrow_style一般选:tail_online5.剖视图中修饰特征、螺纹的显示remove_cosms_from_xsecs:Total:移除前面all:移除所有None:显示所有yes:No6.螺纹显示标准:thread_standard共7项,一般选std_iso_imp_assy7.角度尺寸文本的摆放位置angdim_text_orientation共5种形式:一般选horizontal_outside8.尺寸尺寸引线长度:dim_leader_length:一般选5 直径尺寸文本和引线之间距离:dim_text_gap纵坐标尺寸标准:ord_dim_standard一般选std_iso纵坐标尺寸显示:orddim_text_orientation尺寸文本的位置:text_orientation共四种:一般选:parallel9.尺寸界线自尺寸引线伸出距离witness_line_delta:10.尺寸线和标注对象之间的偏距witness_line_offset11.引线弯肘的长度leader_elbow_length12.视图中箭头箭头形式:draw_arrow_style:filled箭头长度:draw_arrow_length: 2.5箭头宽度:draw_arrow_width: 113.中心线伸出轮廓的长度轴线axis_line_offset:1圆:circle_axis_offset:114.球标引线在目标视图的方式:边/面def_bom_balloons_attachment:edge/surface一般选surface15.球标对齐捕捉线:def_bom_balloons_snap_lines 两个选项:yes no16.球标的最大半径max_balloon_radius:0——由文本关联3——数值为3.17.。
Java 绘制图形到PDF文档

Java 在PDF文档中绘制图形本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法。
包括绘制矩形、椭圆形、不规则多边形、线条、弧线、曲线、扇形等等。
针对方法中提供的思路,也可以自行变换图形设计思路,如菱形、梯形或者组合图形等。
使用工具:Free Spire.PDF for Java(免费版)Jar文件导入:步骤1:将安装包中lib文件夹下的两个文件复制到程序中新建的文件夹中(这里在程序中可新建一个文件夹并命名为Lib)步骤2:复制文件后,将两个添加引用到程序:选中这两个jar文件,点击鼠标右键,选择“Build Path”–“Add to Build Path”。
完成引用。
Java代码示例(供参考)import java.awt.Color;import java.awt.Point;import java.awt.geom.Rectangle2D;import com.spire.pdf.FileFormat;import com.spire.pdf.PdfDocument;import com.spire.pdf.PdfPageBase;import com.spire.pdf.graphics.*;public class DrawShapes {public static void main(String[] args) {//创建PdfDocument对象PdfDocument doc = new PdfDocument();//添加一页PdfPageBase page = doc.getPages().add();//创建画笔、画刷PdfPen pen =new PdfPen(new PdfRGBColor(Color.black),0.3);PdfBrush brush= PdfBrushes.getGreenYellow();//绘制矩形Rectangle2D.Float rect1 = new Rectangle2D.Float(0, 20, 120, 50);//创建Rectangle2D对象,并指定图形在PDF页面中的大小、位置PdfLinearGradientBrush linearGradientBrush = new PdfLinearGradientBrush(rect1,new PdfRGBColor(Color.PINK),new PdfRGBColor(Color.YELLOW),PdfLinearGradientMode.Horizontal);//填充图形颜色page.getCanvas().drawRectangle(linearGradientBrush, rect1);//绘制矩形到页面//绘制椭圆Point centerStart= new Point(205,45);Point centerEnd= new Point(205,45);PdfRadialGradientBrush radialGradientBrush = new PdfRadialGradientBrush(centerStart,0,centerEnd,60,newPdfRGBColor(Color.white),new PdfRGBColor(Color.cyan));Rectangle2D.Float rect2= new Rectangle2D.Float(180, 20, 50, 50);page.getCanvas().drawEllipse(radialGradientBrush,rect2);//绘制多边形Point p1=new Point(290,70);Point p2=new Point(310,45);Point p3=new Point(325,60);Point p4=new Point(340,20);Point p5=new Point(370,70);Point[] points = {p1, p2, p3, p4, p5};page.getCanvas().drawPolygon(pen,brush, points);//绘制弧形float startAngle = 0;float sweepAngle = 270;Rectangle2D.Float rect3= new Rectangle2D.Float(0, 110, 50, 50);page.getCanvas().drawArc(pen, rect3, startAngle, sweepAngle);//绘制扇形Rectangle2D.Float rect4= new Rectangle2D.Float(70, 110, 50, 50);page.getCanvas().drawPie(pen, rect4, startAngle, sweepAngle);//绘制直线Point pStart=new Point(205,110);Point pEnd=new Point(205,160);page.getCanvas().drawLine(pen, pStart, pEnd);//绘制贝塞尔曲线Point startPoint = new Point(290, 135);Point firstControlPoint = new Point(330, 70);Point secondControlPoint = new Point(330, 200);Point endPoint = new Point(370, 135);page.getCanvas().drawBezier(pen, startPoint, firstControlPoint, secondControlPoint, endPoint);//保存文档doc.saveToFile("DrawShapes.pdf",FileFormat.PDF);}}完成代码后,运行程序,生成文档。
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轴的正方向。正的角 度按逆时针方向旋转;负的角度按顺时针 方向旋转。 该方法举例如下:
JavaMeteoInfo解析与绘图代码教程详解

JavaMeteoInfo解析与绘图代码教程详解最近太忙了,终于有时间继续写了,上⽂说到了基本上的绘图⽅法,但缺少⾊阶呈现,⼀般图叠加着地图上,后端不需要管⾊阶,但也要注意web页⾯⾊阶和我们的⽣成⾊阶⼀定要对的上对于后端导出图⽚的话,就需要添加⾊阶了,这⼀⽂很简单,就涉及⾊阶,名称,⽹格刻度线顺便对代码我进⾏了优化,看起来更直接MeteoDataInfo meteoDataInfo = new MeteoDataInfo();meteoDataInfo.openMICAPSData("D:\\解析数据\\cldas\\cldas\\TEM\\20081000.000");GridData grid = meteoDataInfo.getGridData();//读取地图AVectorLayer scmap = MapDataManage.readMapFile_ShapeFile("C:\\Users\\Administrator\\Downloads\\好例⼦⽹_全国省、县界线shp格式⽮量图(精确到县区域)\\全国省、县界线shp格式⽮量图(精确到县区域)\\sichuan.shp"); //读取地图BVectorLayer qgmap = MapDataManage.readMapFile_ShapeFile("E:\\shp\\四川\\四川省(3)_市界.shp");//描述地图边界线PolygonBreak pb = (PolygonBreak) qgmap.getLegendScheme().getLegendBreak(0);//是否设置填充pb.setDrawFill(false);//设置轮廓颜⾊pb.setOutlineColor(Color.black);//读取⾊阶LegendScheme als = LgsUtil.readFromLgs("D:\\apache-tomcat-8.0.50\\alt⾊阶\\TEM.lgs");//绘制图层VectorLayer layer = DrawMeteoData.createShadedLayer(grid,als,"","",true);//创建视图MapView view = new MapView();layer = layer.clip(scmap);//叠加图层view.addLayer(layer);view.addLayer(qgmap);//视图设置MapLayout layout = new MapLayout();//去除图形边框layout.getActiveMapFrame().setDrawNeatLine(true);//抗锯齿layout.getActiveMapFrame().setMapView(view);view.setAntiAlias(true);layout.setAntiAlias(true);//根据视图计算视图的宽⾼Extent extent = view.getExtent();int size = 800;Rectangle rectangle = new Rectangle(size, (int) (size * 1D / extent.getWidth() * extent.getHeight()));//设置地图区域⼤⼩和外边距int width = rectangle.width;int left = 50;int height = rectangle.height;int right = 140;int top = 50;int bottom = 50;//设置页⾯边界layout.setPageBounds(new Rectangle(0, 0, width + left + right, height + top + bottom));//获取地图框MapFrame frame = layout.getActiveMapFrame();//设置布局边界frame.setLayoutBounds(new Rectangle(left, top, width, height));//绘制⽹格刻度线frame.setDrawGridLine(true);//设置⽹格间隔值frame.setGridXDelt(0.5);frame.setGridYDelt(0.5);//设置图例Rectangle bounds = layout.getActiveMapFrame().getLayoutBounds();LayoutLegend legend = layout.addLegend(bounds.x + bounds.width + 15, 0);legend.setLegendStyle(LegendStyles.Normal);legend.setTop(bounds.y + (bounds.height - legend.getHeight()) / 2);legend.setLegendLayer(layer);//导出layout.exportToPicture(PathUtil.getDeskPath()+"/1.png");以上的⽅法我只设定了刻度线和⾊阶,其他的也很简单,我在下⾯说明⼀下标题设定-放到设定好视图⼤⼩的后⾯Rectangle bounds = layout.getActiveMapFrame().getLayoutBounds();layout.addText(title, bounds.x + bounds.width / 2, y, 18);到⽬前简单的绘制与设定就没有什么可说的了,基本上的操作在⽂章⾥都有了,都是⼀些样式的东西,这些都是绘制已经进⾏插值的图⽚,但在开发中,我们也会遇到天擎和CIMISS直接返回的站点数据,这个怎么绘制下⼀节说明⼀下,再后⾯的章节就是个别问题的研究了到此这篇关于Java MeteoInfo解析与绘图代码教程详解的⽂章就介绍到这了,更多相关Java MeteoInfo绘图教程内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
绘图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基础入门教程(适合所有菜鸟)

第2章 Java语言开发环境 6 2.1 JDK 62.1.1 JDK的简介62.1.2 JDK的构成62.1.3 JDK的使用62.2 IDE 82.2.1 IDE简介82.2.2 JBuilder 92.2.3 Eclipse 92.2.4 相关资源92.3 Project管理92.3.1 Project的含义92.3.2 可行的Project组织模式 9102.4 本章小结 10习题10第1章 Java语言概述与面向对象思想1.1 Java语言的开展1.1.1 Java语言的产生上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以防止C++的一些缺乏。
该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树〔Oak〕。
后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。
随着Internet的迅速开展,Web应用日益广泛,Java语言也得到了迅速开展。
1994年,Gosling用Java开发了一个实时性较高、可靠、平安、有交互功能的新型Web浏览器,它不依赖于任何硬件平台和软件平台。
这种浏览器名称为HotJava,并于1995年同Java语言一起,正式在业界对外发表,引起了巨大的轰动,Java的地位随之而得到肯定。
此后的开展非常迅速。
Java编程语言的句法与C++的句法相似,语义那么与Small Talk TM的语义相似。
Java编程语言可被用来创立任何常规编程语言所能创立的应用程序。
设计Java编程语言的主要目标是:提供一种易于编程的语言,从而消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。
利用面向对象的概念使程序真正地成为完全面向对象的程序。
为获得如下两点益处提供一种解释环境:提高开发速度──消除编译─链接—装载—测试周期;代码可移植性──使操作系统能为运行环境做系统级调用。
Java中的Graphics2D类基本使用的教程

Java中的Graphics2D类基本使用的教程Java中的Graphics2D类基本使用的教程Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供、坐标转换、颜色管理以及文字布局等更精确的控制。
绘图属性Graphics2D定义了几种方法,用于添加或改变图形的状态属性。
可以通过设定和修改状态属性,指定画笔宽度和画笔的连接方式;设定平移、旋转、缩放或修剪变换图形;以及设定填充图形的颜色和图案等。
图形状态属性用特定的对象存储。
1. stroke属性stroke属性控制线条的宽度、笔形样式、线段连接方式或短划线图案。
该属性的设置需要先创建BasicStroke对象,再调用setStroke()方法来设置。
创建BasicStroke对象的方法有:BasicStroke(float w):指定线条宽w。
BasicStroke(float w,int cap, int join):cap是端点样:CAP_BUTT(无修饰),CAP_ROUND(半圆形末端),CAP_SQUARE(方形末端,默认值)。
Join定义两线段交汇处的连接方式:JOIN_BEVEL(无修饰),JOIN_MTTER(尖形末端,默认值),JOIN_ROUND(圆形末端)。
2. paint属性paint属性控制填充效果。
先调用以下方法确定填充效果,理用setPaint()方法设置。
GradientPaint(float x1,float y1,Color c1,float x2,flaot y2,Color c2):从(x1,y1)到(x2,y2)颜色从c1渐变到c2。
其中:参数c1,c2决定这个渐变色是从颜色c1渐变到颜色c2。
参数x1,y1,x2,y2决定了渐变的强弱,即要求从点(x1,y1)出发到达点(x2,y2),颜色从c1变成c2。
java绘图课程设计

java绘图课程设计一、课程目标知识目标:1. 让学生掌握Java绘图基本概念,理解Java图形用户界面(GUI)编程原理;2. 学会使用Java中的绘图相关类和接口,如Graphics、Graphics2D等;3. 了解Java中的颜色、字体和图像处理方法。
技能目标:1. 培养学生运用Java编程实现基本图形绘制、图像显示和动画效果的能力;2. 提高学生在Java项目中运用绘图技术解决实际问题的能力;3. 培养学生自主学习和团队合作的能力,通过项目实践,提高编程技能。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养良好的编程习惯;2. 培养学生积极思考、勇于探索、善于合作的精神;3. 增强学生的创新意识,培养审美观念,提高作品质量。
课程性质:本课程为Java编程的进阶课程,以实践操作为主,结合理论知识,旨在提高学生的编程技能和实际应用能力。
学生特点:学生已经掌握了Java编程基础,具有一定的编程能力和逻辑思维能力。
教学要求:结合实际案例,引导学生自主学习,注重实践操作,培养团队协作能力,提高编程水平和解决问题的能力。
将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. Java绘图基础- Java图形用户界面(GUI)编程原理- AWT绘图包和Swing绘图组件- Graphics类和Graphics2D类的常用方法2. 基本图形绘制- 线条、矩形、椭圆、圆弧等基本图形的绘制- 颜色、字体设置- 画笔和填充效果3. 图像处理- 图像加载和显示- 图像旋转、缩放、平移等变换操作- 图像合成与透明度处理4. 动画制作- 帧动画原理- 定时器使用- 动画效果实现5. 项目实践- Java绘图综合案例:设计与实现一个简易画图软件- 团队合作:分组完成一个绘图项目,如迷宫游戏、简单动画等- 作品展示与评价教学内容安排与进度:1. 第1周:Java绘图基础,熟悉GUI编程原理和绘图相关类2. 第2周:基本图形绘制,掌握绘图方法及颜色、字体设置3. 第3周:图像处理,学习图像加载、显示及变换操作4. 第4周:动画制作,了解动画原理,实现基本动画效果5. 第5周:项目实践,分组进行项目设计与实现,作品展示与评价教材章节关联:1. Java绘图基础:第X章 Java图形用户界面编程2. 基本图形绘制:第X章 Java绘图技术3. 图像处理:第X章 图像处理与显示4. 动画制作:第X章 动画设计与实现5. 项目实践:综合前面所学内容,进行实际应用和创新设计。
JAVA实验报告总结计划——简单绘图程序

实验三绘制图形一、实验目的学会JButton 的使用,能进行JButton 的基本操作,能使用JButton 结构一个图形界面框架经过实验熟习swing图形用户界面程序设计熟习java 中的事件办理模型,每个事件动作代表的意义进一步提升编程能力,学会独立思虑,学会上网查找资料决问题。
二、实验内容设计一个程序,该程序能够绘制基本的图形(包含圆形、矩形、直线等);要求有一个简单易操作的用户界面(包含菜单、按钮等组件)。
编写的程序要求能够实现保留和读取的功能。
三、实验代码import ;import ;import ;importimportimportimport winpaint.WinToolBar;import winpaint.windowsPaint;public class Main{/**@paramargs*/public static void main(String[]args){TODOAuto-generatedmethodstubJPanelpain tWin=newwindowsPaint("绘图");paintWin.setBounds(0,30,1000, 1000);paintWin.s etLayout(null);paintWin.s etVisible(tru);eJToolBarto ol=newWinToolBar((windowsPai nt)paintWin);tool.setBounds(0,0 ,1000,30);tool.setVi sible(true);JFramefram e=newJFram e();frame.setL ayout(null);frame.setV isible(true);frame.setBounds(0,0,1000,1000); frame.add(tool);frame.add(paintWin);}}importbase.GrapicsElem;importbase.Rect;publicclasstestfractor{/**@paramargs@throwsClassNotFoundException*/publicstaticvoidmain(String[]args)throwsClassNotFoundException{ TODOAuto-generatedmethodstubGrapicsElemGe=newRect();Class<?>demo1=null;Class<?>demo2=null;Class<?>demo3=null;try{// 一般尽量采纳这类形式demo1=Class.forName("base.Rect");Class<?>con= demo1.getSuperclass();demo2=Class.forName("base.GrapicsElem");Class<?>suns[]= demo2.getInterfaces();for(inti=0;i<suns.length;i++){}//GrapicsElemgg=(GrapicsElem)con[0].newInstance();con[0]);con[1]);con[2]);}catch(Exceptione){e.printStackTrace();}demo2=newRect().getClass();demo3=Rect.class;}}package base;importimportimportpublic abstract class GrapicsElem{Point start ;Point end;private Color color ;public ColorgetColor(){return color ;}p ubli c th is void setColor(Colorcolor){ .color =color;}publ ic th isvoid setStart(Pointstart){ .start =start;}publ ic th isvoid setEnd(Pointend){ .end=end;} publi c publ ic publ ic publ ic abstractabstractabstractabstractvoidvoidvoidvoiddoMousePress(Pointp);doMouseDrag(Pointp);doMouseRelease(Pointp);draw(Graphicsg);}package base; importimportimportpublicclassLineArrayList<Point>extendstrackGrapicsElem{;public Line(){track =newArrayList<Point>();}@Overridepublic void draw(Graphicsg){for (int i=0;i< track .size()-1;i++){Pointcur= track .get(i);Pointnext= track .get(i+1);}//}private voidAddPoint(Pointp){track .add(p);}@Overridepublic voiddoMousePress(Pointp){ TODOAuto-generatedmethodstubAddPoint (p);}@Overridepublic voiddoMouseDrag(Pointp){ TODOAuto-generatedmethodstubAddPoint (p);}//@Overridepublic voiddoMouseRelease(Pointp){TODOAuto-generatedmethodstubAddPoint(p);}}package base;importimportpublic class Rect extends GrapicsElem{int x,y,width ,height ;@Overridepublic void draw(Graphicsg){TODOAuto-generatedmethodstubg.drawRect(getX(),getY(),getWidth(),getHeight()); }@Overridepublic void doMousePress(Pointp){super.setStart(p);super.setEnd(p);}@Overridepublic void doMouseDrag(Pointp){super.setEnd(p);}@Overridepublic void doMouseRelease(Pointp){super.setEnd(p);}p ublicintgetX(){returnMath.min(start.x,end.x);}p ublicintgetY(){returnMath.min(start.y,end.y);}p ublicint getWidth(){ returnMath.abs(start.x-end.x);}p ublicint getHeight(){ returnMath.abs(start.y-end.y);}}package base;importpublic class Circle extends Rect{@Overridepublic void draw(Graphicsg){TODOAuto-generatedmethodstubg.drawOval(getX(),getY(),getWidth(),getHeight()); }}packagewinpaint;importbase.Circle;importbase.GrapicsElem;importbase.Line;importbase.Rect;publicclasswindowsPaintextendsJPanelimplementsMouseListener,MouseMotionListener{Stringcommand=" 矩形";List<GrapicsElem>Lg=newArrayList();GrapicsElemcur;JLabellabel;publicwindowsPaint(Stringtitle){init();}privatevoidinit(){addMouseListener(this);addMouseMotionListener(this);}/**能够使用反射去掉判断语句、Class<?>g=Class.forName("base.Rect");g.newInstance();@return*/privateGrapicsElemnewInstance(){command= mand;if(command.equals(" 矩形")){returnnewRect();}elseif(command.equals(" 圆形")){returnnewCircle();}elseif(command.equals(" 线")){returnnewLine();}returnnull;}//@Overridepublicvoidpaint(Graphicsg){TODOAuto-generatedmethodstubsuper.paint(g);//Graphics2Dg2d=(Graphics2D)g;//g2d.setColor(cur.getColor());g2d.setStroke(newBasicStroke(10.0f));for(inti=0;i<Lg.size();i++){GrapicsElemge=Lg.get(i);ge.draw(g);}}@Overridepublicvoidrepaint(){//TODOAuto-generatedmethodstub//// // //// //// //// //// //////TODOAuto-generatedmethodstub//super.repaint();Threadthread=newThread(newRunnable(){ @Overridepublicvoidrun(){//TODOAuto-generatedmethodstubtry{//////// //// ////SaveToFile();}catch(IOExceptione){//TODOAuto-generatedcatchblock e.printStackTrace();////}////}////thread.start();//////////// //// //// //// //// //// ////ImageIconbg=newImageIcon("tmp.jpg");if(bg!=null){if(label!=null)this.remove(label);label=newJLabel(bg);label.setBounds(0,0,bg.getIconWidth(),bg.getIconHeight()); this.add(label);super.repaint();////}//////}privatevoidSaveToFile()throwsIOException{TODOAuto-generatedmethodstubBufferedImagebimg=newBufferedImage(this.getWidth(),this.getHeight(),BufferedImage.T YPE_3BYTE_BGR);Graphics2Dg2d=bimg.createGraphics();this.paint(g2d);ImageIO.write(bimg,"jpg",newFile("tmp.jpg"));}@OverridepublicvoidmousePressed(MouseEvente){Pointp=newPoint(e.getX(),e.getY());cur=newInstance();cur.doMousePress(p);Lg.add(cur);}@OverridepublicvoidmouseDragged(MouseEvente){Pointp=newPoint(e.getX(),e.getY());cur.doMouseDrag(p);repaint();}@OverridepublicvoidmouseReleased(MouseEvente){Pointp=newPoint(e.getX(),e.getY());cur.doMouseRelease(p);repaint();}@OverridepublicvoidmouseMoved(MouseEvente){//TODOAuto-generatedmethodstub}@OverridepublicvoidmouseClicked(MouseEvente){//TODOAuto-generatedmethodstub}@OverridepublicvoidmouseEntered(MouseEvente){//TODOAuto-generatedmethodstub}@OverridepublicvoidmouseExited(MouseEvente){//TODOAuto-generatedmethodstub}}packagewinpaint;publicclassWinToolBarextendsJToolBarimplementsActionListener{publicstaticStringCo mmand="JButtonbtn1,btn2,btn3;//windowsPaintwinp; publicWinToolBar(windows PaintwinP){btn1=newJButton("矩形"); btn2=newJButton("圆形"); btn3=newJButton(" 线"); this.add(btn1);this.add(btn2);this.add(btn3);矩形";btn1.addActionListener((ActionListener)this);btn2.addActionListener((ActionListener)this);btn3.addActionListener((ActionListener)this);=winP;JComboBoxcom=newJComboBox();com.addItem("红色");com.addItem(" 蓝色");com.addItem(" 黑色");com.addItemListener(newItemListener(){@OverridepublicvoiditemStateChanged(ItemEvente){//TODOAuto-generatedmethodstub}});this.add(com);}@OverridepublicvoidactionPerformed(ActionEvente){TODOAuto-generatedmethodstubJButtonbtn=(JButton)e.getSource();btn.setBackground(Color.green);Com mand=btn.getActionCommand();}}三、实验结果。
画图Java教程

1.总体分为3个类:PaintFrame:画界面及界面控件触发(2次课)PaintPanel继承Canvas:主要实现鼠标拖拽功能根据鼠标拖拽动作划线(3次课)(Canvas,直接继承自Component组件,主要用于绘图,没有控件,更原始,Panel,继承自Container容器,主要用于镶嵌在其他控件里面当面板。
)PaintingProperties:存储当前选择的颜色、粗细、形状,所以包含三个成员变量,每个成员变量都有初始值,并实现三个成员变量的set和get方法。
(1次课)2.PaintFrame的界面仅供参考,其中凹进去的panel是选择粗细的控件,如果觉得有难度的同学可以使用JRadioButton或者下拉列表JComboBox实现:左边的图形可以使用按钮实现,但是界面效果不是很好菜单使用JMenuBar实现,代码示例:JMenuBar bar = new JMenuBar();JMenu menuFile = new JMenu("文件");JMenuItem createItem = new JMenuItem("清屏");menuFile.add(createItem);使用的JPanel默认颜色比较深,可以使用如下背景色leftPanel.setBackground(new Color(210,210,210));按钮初始化代码示例:for(int i = 0; i < SHAPENUM ; i++){if(i != 1){shapeButton[i] = new JButton(new ImageIcon(".//images//"+i + "0.gif"));}else{shapeButton[i] = new JButton(new ImageIcon(".//images//"+i + "1.gif"));}shapeButton[i].setBorder(BorderFactory.createRaisedBevelBorder());shapeButton[i].setBounds(2+i%2*27, 2+i/2*27, 27, 27);leftPanel.add(shapeButton[i]);shapeButton[i].addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {JButton b=(JButton) e.getSource();ImageIcon icon = (ImageIcon) b.getIcon();String iconPath = icon.getDescription();int pos = stIndexOf(".gif");String flag = iconPath.substring(pos-1,pos);int shapeNum = Integer.parseInt(iconPath.substring(stIndexOf("//")+2, pos-1));if(flag.equals("0")){b.setIcon(new ImageIcon(".//images//"+shapeNum + "1.gif"));shapeButton[lastShape].setIcon(new ImageIcon(".//images//"+lastShape+"0.gif"));……..}//if}});}颜色的实现是一个JPanel和36个JButton组成,代码示例:Panel cbPanel = new JPanel();cbPanel.setBackground(Color.black);JButton []colorJP = new JButton[36];int n = 0;for(int i = 1 ; i <= 255 ;i += 127){for(int j = 1 ; j <= 255 ;j += 127){for(int m = 1 ; m <= 255 ;m += 64){colorJP[n] = new JButton();colorJP[n].setBackground(new Color(i-1,j-1,m-1));colorJP[n].setBounds(41+n/2*17, 15+n%2*18, 15, 15);colorJP[n].setBorder(BorderFactory.createLoweredBevelBorder());colorJP[n++].addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {JButton b=(JButton) e.getSource();paitingProperties.setcolor(b.getBackground());cbPanel.setBackground(b.getBackground());//获取当前的颜色并设置PaintingProperties的颜色}});//将按钮加入面板并将n++}}}上面示例中出现了颜色的触发事件,其他的触发事件如下:(1)将当前图片换为有阴影的图片,原图片设置为没有阴影的图片,获取当前的形状(使用1,2,….等表示)并设置PaintingProperties的形状;(2)选择RadioButton或者下拉列表JComboBox选择颜色后设置PaintingProperties的粗细程度。
Java程序设计项目教程第8章绘制股市K线图

java.applet.Applet implements Runnable (2)多线程的应用 • 首先,在Applet的init()方法中对要创建的线程
(M_pointThread)进行定义及初始化: • 然后,在Applet的start()和stop()方法中加入代码:
– 在使用“无布局管理器”时,首先要作出声明,即: setLayout(null); – 然后用setBounds()方法指定组件的具体位置和尺寸
3.输入、输出数据流
• Java Applet在客户端浏览器上运行时,要从服务器端读取股票的相关数据 进行做图,这就涉及到Java数据流的运用。
• 先在服务器端把股票数据写入一文本文件中(其格式为:第一行为股票的汉 字名称,以后每一行内包括:开盘日期、开盘价、最高价、最低价、收盘价、
• 鼠标移动时显示对应日期的相关数据,鼠标拖动 可调整日期窗口。
• 网页还带有背景音乐,以提高用户的浏览乐趣。
8.2 项目设计分析
【项目技术要点】 1.Applet绘图及多媒体应用 • 主要用于页面显示和刷新,“蜡烛图”和均线的绘制,背景音乐
的播放等。相关技术主要包括Applet生命周期及相关方法,绘 制矩形和曲线,调整颜色,播放音乐等。 2.多线程的使用 • 主要用于绘制十字游标,相关技术主要包括线程的生命周期和实 现方法。 3.布局管理器及界面设计 • 主要用于主显示界面的设计,相关技术主要包括布局管理器和控 件的设计与应用。 4.数据输入、输出流的应用 • 主要用于读取股票数据来绘制K线图,相关技术主要包括从文件 读取数据,经过分离处理和数据转换,从而获得所需数据。 5.设置、监听鼠标与键盘事件 • 主要用于对输入股票号码、移动鼠标、拖动鼠标等事件做出相应 的处理,相关技术主要包括事件处理机制、事件监听器接口、抽 象适配器等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图5.2 裁剪后的图形界面
Java实用教程
5.4 Color类
Color类是用来封装颜色的,在上面的例子中多次用到。使 用Color对象较为简单的方法是直接使用Color类提供的预定义的 颜色,像红色Color.red、橙色Color.orange等;也可以使用RGB
颜色模式进行定义。所谓RGB颜色模式是指使用三种基色:红、
public void paint(Graphics oldg)
{ Graphics2D g = (Graphics2D)oldg;
Java实用教程
g.setColor(Color.blue);
g.fill(new Ellipse2D.Float(50,50,150,150)); g.setColor(new Color(255,0,0,0)); g.fill(new Ellipse2D.Float(50,50,140,140)); g.setColor(new Color(255,0,0,64)); g.fill(new Ellipse2D.Float(50,50,130,130)); g.setColor(new Color(255,0,0,128)); g.fill(new Ellipse2D.Float(50,50,110,110)); g.setColor(new Color(255,0,0,255)); g.fill(new Ellipse2D.Float(50,50,90,90)); g.setColor(new Color(255,200,0)); g.fill(new Ellipse2D.Float(50,50,70,70)); } }
Java实用教程
5.2 Paint方法、Update方法和Repaint方法
1. Paint方法 public void paint(Graphics g) 以画布为参数,在画布上执行画图方法。在Applet中,不显 式地调用paint方法。
2. Repaint方法
Applet重画时系统自动调用paint方法。 3. Update方法 public void update(Graphics g) 更新容器,向Repaint发出刷新小应用程序的信号,缺省的 Update方法清除Applet画图区并调用Paint方法。
Java实用教程
通过指定的name、style和size创建字体实例。name指字体
名,像“隶书”、“TimesRoman”等,字体风格为粗体、斜体, size指字号大小。 例如: Font f = new Font("TimesRoman",Font.BOLD + Font.ITALIC, 12); 创建了具有粗斜体风格的12磅的TimesRoman字体。
正常显示;当alpha分量为0时,表示完全透明,前三个分量不
起作用,而介于0~255之间的值可以制造出颜色不同的层次效 果。
Java实用教程
【例5.2】测试Color对象,界面如图5.3所示。源程序代码如下:
//程序文件名UseColor.java import java.awt.*; import java.applet.*; import java.awt.geom.*; public class UseColor extends Applet {
Java实用教程
Java绘图
5.1 Java图形 5.2 Paint方法、Update方法和Repaint方法 5.3 Graphics类
5.4 Color类
5.5 Graphics2D类 习 题
Java实用教程
5.1 Java图形
抽象窗口化工具(AWT)为图形用户界面编程提供API编程接
口,使得Java可以提供较好的图形用户界面。AWT把图形处理
g.drawString("图形显示",180,30);
g.drawLine(20,20,100,50); g.drawLine(20,20,50,100); //矩形 g.drawRect(40,40,40,40); g.fillRect(60,60,40,40); g.setColor(Color.red); //3D矩形
Java实用教程 【例5.1】设置Graphics对象画图,显示结果如图5.1所示。源 程序代码如下: //程序文件名SimpleGUI.java
import java.awt.*;
import java.applet.*; public class SimpleGUI extends Applet { Image samImage;
public void init()
{ samImage=getImage(getDocumentBase(),"sample.gif");
Java实用教程 } public void paint(Graphics g) { //g.clipRect(50,50,180,180); //画线
g.drawLine(0,0,20,30);
int yC[] = {240,243,290,300,270};
g.drawPolygon(xC,yC,5); //图片 g.drawImage(samImage,250,50,this); }
}
Java实用教程
图5.1 简单的图形界面
Java实用教程 将例5.1注释的程序语句 // g.clipRect(50,50,180,180); 的注释符号去掉,重新编译执行,可以看见如图5.2所示的结果。
Java实用教程
ቤተ መጻሕፍቲ ባይዱ
图5.3 颜色测试界面
Java实用教程
5.5 Graphics2D类
Graphics2D类继承于Graphics类,提供几何学、坐标变换、 颜色管理以及文本排列等的更高级控制。Graphics2D类是Java平 台上渲染二维图形、文字、以及图片的基础类,提供较好的对绘 制形状、填充形状、旋转形状、绘制文本、绘制图像以及定义颜 色的支持。
Graphics类提供画各种图形的方法,其中包括线、圆和椭圆、矩
形和多边形、图像以及各种字体的文本等。这些方法具体如下: public abstract void clipRect(int x, int y, int width, int height) 指定的区域切分。
Java实用教程
public abstract void drawLine(int x1, int y1, int x2, int y2)
//输出字符串 g.drawString("图形显示",100,30);
//设置颜色
Color c = new Color(255,200,0); g.setColor(c); //设置字体
Java实用教程 Font f = new Font("TimesRoman",Font.BOLD+ Font.ITALIC,24); g.setFont(f);
绿、蓝,通过三种颜色的调整得出其它各种颜色,这三种基色 的值范围为0~255。例如Color c = new Color(255,200,0);定义橙 色。表5.1给出常用颜色的RGB值以及对应的类预定义参数。
Java实用教程 表5.1 常用颜色的RGB值以及对应的类预定义参数
颜色名 白色 浅灰色 灰色 深灰色 黑色 红色 粉红色 橙色 黄色 绿色 品红色 深蓝色 蓝色 预定义颜色值 Color.white Color.lightGray Color.gray Color.darkGray Color.black Color.red Color.pink Color.orange Color.yellow Color.green Color.magenta Color.cyan Color.blue 红色值 255 192 128 64 0 255 255 255 255 0 255 0 0 绿色值 255 192 128 64 0 0 175 200 255 255 0 255 0 蓝色值 255 192 128 64 0 0 175 0 0 0 255 255 255
Java实用教程
5.3 Graphics类
Graphics类是所有图形上下文的抽象基类,允许应用程序在 各种设备上实现组件的画图。图形对象封装了Java支持的基本渲 染操作的状态信息,包括画图的组件对象、渲染区域的坐标 (coordinates)、区域(clip)、颜色(color)、字体(font)、画图模式等。
g.setColor(Color.blue);
//圆角矩形
g.drawRoundRect(180,180,40,40,20,20); g.fillRoundRect(200,200,40,40,20,20);
Java实用教程 //多边形 int xC[] = {242,260,254,297,242};
Java实用教程 Color还有一个构造函数,它构造的Color对象用于是否透 明显示颜色。 public Color(int red, int green, int blue, int alpha) 其中:前三个分量即RGB颜色模式中的参数,第四个alpha 分量指透明的程度。当alpha分量为255时,表示完全不透明,
Java实用教程 public abstract void setColor(Color c)
设置图形上下文的当前颜色。
public abstract void setPaintMode() 设置画模式。 public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer) 画特定图。 public abstract void setFont(Font font) 设置特定的font字体。使用时首先得到font对象的一个实例, Font类常用构造函数为: public Font(String name, int style, int size)