1.Java2D——图形备忘(Java多媒体).ppt

上传人:本田雅阁 文档编号:2150258 上传时间:2019-02-22 格式:PPT 页数:28 大小:864.51KB
返回 下载 相关 举报
1.Java2D——图形备忘(Java多媒体).ppt_第1页
第1页 / 共28页
1.Java2D——图形备忘(Java多媒体).ppt_第2页
第2页 / 共28页
1.Java2D——图形备忘(Java多媒体).ppt_第3页
第3页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《1.Java2D——图形备忘(Java多媒体).ppt》由会员分享,可在线阅读,更多相关《1.Java2D——图形备忘(Java多媒体).ppt(28页珍藏版)》请在三一文库上搜索。

1、Java2D图形,大外软件学院(徐),主要内容,Java2D图形的坐标系统 颜色 Graphics2D类 Java2D基本图形 画笔的粗细、颜色和填充模式 图形的旋转,Java2D图形的坐标系统,X轴,Y轴,(0,0),RGB色彩模式,RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0255范围内的强度值。 (0,0,0)是黑色,(255,255,255)是白色,(255,0,0)是纯红色 (100,0,0)是暗红色,(0,100,0)是暗绿色,(0,0,100)是暗蓝色 (50,50,50)是暗灰色,(150,150,150)是亮一些的灰色。,Color类,Java.awt

2、包下 常量:Color.YELLOW 等 构造方法:Color(int r,int g,int b)构造函数,分别代表红绿蓝的参数0-255,Graphics2D类,表示当前绘画的上下文,即画笔。通过Graphics类,你可以画矩形、椭圆以及多边形。而Graphics2D增强了几何图形渲染概念,提供渲染任意几何图形的机制。与其类似使用Java 2D API你能画出任意样式、任意宽度的线,使用任意的纹理来填充各种几何图形。,Java2D基本图形,1直线 使用java.awt.geom包中的Line2D的子类Line2D.Double创建一个直线对象。如: Line2D line=new Line

3、2D.Double(12,20,100, 90); 创建一条(12,20)到(100,90)直线对象。,Java2D基本图形,2矩形 使用java.awt.geom包中的Rectangle2D. Double类来创建一个矩形对象,如: Rectangle2D rect=new Rectangle2D. Double (50,50,300,50.897); 上述语句创建了一个左上角坐标是(50,50),宽是300,高是50.987的一个矩形对象。,Java2D基本图形,3圆角矩形 使用java.awt.geom包中的RoundRectangle2D. Double类来创建一个圆角矩形对象: Ro

4、undRectangle2D rect_round=new RoundRectangle2D. Double (50,50,300,50,8,5); 上述语句创建了一个左上角坐标是(50,50),宽是300,高是50,圆角的长轴和短轴分别为8和5的圆角矩形对象。,Java2D基本图形,4椭圆 使用java.awt.geom包中的Ellipse2D. Double类来创建一个椭圆对象: Ellipse2D ellipse=new Ellipse2D. Double (50,30,300,50);,练习主体框架,public class ShapeFrame extends Frame Shape

5、Canvas sc = new ShapeCanvas(); public ShapeFrame(String s) super(s); setLayout(new BorderLayout(); add(sc,BorderLayout.CENTER); setSize(1000,700); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public static void main(String args)

6、ShapeFrame pf = new ShapeFrame(“图形处理“); ,练习画布和颜色,public class ShapeCanvas extends Canvas ShapeCanvas() setBackground(Color.YELLOW); public void paint(Graphics g) /画图 ,练习椭圆,public void paint(Graphics g) Graphics2D g2=(Graphics2D)g; Ellipse2D ellipse=new Ellipse2D.Double (20,30,400,200); g2.setColor(C

7、olor.green); g2.draw(ellipse); ,练习其他图形,/ 直线 前两个参数是起始点,后两个参数是结束点 Line2D line = new Line2D.Double(70, 30, 70, 10); g2.setColor(Color.red); g2.draw(line); / 矩形 Rectangle2D rec = new Rectangle2D.Double(100, 100, 200, 400); g2.setColor(Color.ORANGE); g2.draw(rec); g2.setColor(Color.gray); g2.fill(rec); /

8、圆角矩形 RoundRectangle2D rrec = new RoundRectangle2D.Double(50, 50, 300, 500,20, 20); g2.setColor(Color.blue); g2.draw(rrec);,Java2D基本图形,5绘制圆弧 使用java.awt.geom包中的Arc2D. Double类创建一个圆弧对象: Arc2D ellipse=new Arc2D. Double (50,30,300,50,0,100,Arc.PIE); 上述语句创建了一个外接矩形的左上角坐标是(50,30),宽是300,高是50的起始角是0度终止角是100度的饼弧

9、对象。其中,最后一个参数取值:Arc2D.OPEN、Arc2D.CHORD、Arc2D.PIE决定弧是开弧、弓弧和饼弧。,练习圆弧,/ 弧度的特殊讲解 Arc2D arc= new Arc2D.Double(0, 0, 200, 90, 0, 270, Arc2D.OPEN);/开弧 g2.draw(arc); g2.fill(arc); arc.setArc(100, 0, 90, 90, 0, 270, Arc2D.CHORD);/ 弓弧 g2.draw(arc); arc.setArc(200, 0, 90, 90, 0, -270, Arc2D.PIE);/ 饼弧 g2.draw(ar

10、c);,Java2D文字,7.文字 Font类: new Font(String 字体,int 风格,int 字号); setFont(Font f) 设置字体。当绘制文本时,Graphics对象用参数f指定的字体。 drawString(String s, int x, int y) 从参数x、y指定的坐标位置处,从左向右绘制参数s指定的字符串。,Java2D文字,Font f1 = new Font(“隶书“, Font.BOLD, 28); Font f2 = new Font(“Comic Sans MS“, Font.BOLD + Font.ITALIC, 16); g2.setFo

11、nt(f1); g2.drawString(“计算机“, 10, 30); g2.setFont(f2); g2.drawString(“Java“, 10, 80);,画笔粗细,BasicStroke类的成员: width这个参数最容易理解,表示线条的宽度 cap只能取三个值:CAP_BUTT, CAP_ROUND or CAP_SQUARE,表示不同的线端。 join这个参数表示当两条线连接时,连接处的形状,可以取JOIN_ROUND, JOIN_BEVEL, or JOIN_MITER三个值。 默认端点使用CAP_SQUARE,默认连接使用JOIN_MITER,画笔粗细,画笔粗细,设置画

12、笔宽度为3 BasicStroke bs = new BasicStroke(3); g2.setStroke(bs);,渐进填充,GradientPaint是Java2D中专门用来控制渐变的类,它提供了使用线性颜色渐变模式填充 Shape 的方法。其构造函数GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2),充分说明了它的作用,即从点(x1,y1)到点(x2,y2)进行渐变。,渐进填充,/ 渐变填充椭圆 Ellipse2D ellipse = new Ellipse2D.Doubl

13、e(20, 30, 400, 200); GradientPaint gp = new GradientPaint(20, 30, Color.red, 200, 100, Color.green, true);/true代表颜色循环 g2.setPaint(gp); g2.fill(ellipse);,纹理填充,TexturePaint类平铺一个图像来填充图形。构造函数接收一个java.awt.image.BufferedImage和一个Rectangle2D,把图像影射到矩形里,然后平铺矩形。建立一个BufferedImage来保存图像相对是更直接的方法。在BufferedImage的构造

14、函数里制定长,宽,高,类型为BufferedImage.TYPE_INT_RGB,然后调用createGraphics()方法得到一个Graphics2D。,纹理填充,/ 创建纹理 BufferedImage buffImage = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB); /纹理区域的大小为10*10 Graphics2D gg = buffImage.createGraphics(); / 得到缓冲区画笔 gg.setColor(Color.yellow); gg.fillRect(0, 0, 10, 10); / 画缓冲

15、区填充底色(黄色) gg.setColor(Color.red); gg.fillOval(0, 0, 5, 5); / 缓冲区左上1/4区域画红色填充圆 gg.setColor(Color.green); gg.fillOval(5, 5, 5, 5); / 缓冲区右下1/4区域画绿色填充圆 / 创建结束 /定义好的10*10的纹理拉伸到50,50大小,在填充椭圆 TexturePaint mypaint = new TexturePaint(buffImage, new Rectangle(50, 50); g2.setPaint(mypaint);,图形旋转,AffineTransfor

16、m类来实现对图形的这些操作。 (1)首先使用AffineTransform类创建一个对象: AffineTransform trans=new AffineTransform(); 对象trans具有最常用的三个方法来实现对图形变换操作:,图形旋转,translate(double a,double b) 将图形在x轴方向移动a 个单位 像素,y轴方向移动b个像素单位。a是正值时向右移动,负值是向左移动;b是正值时是向下移动,负值向上移动。 scale(double a,double b) 将图形在x轴方向缩放a倍,y轴方向缩放b倍。 rotate(double number,double x,double y) 将图形沿顺时针或逆时针以(x,y)为轴点旋转number个弧度。,图形旋转,(2)进行需要的变换,比如要把一个矩形绕点(100,100)顺时针旋转60度,那么就要先作好准备: trans.rotate(60.0*3.1415927/180,100,100); (3)把Graphics对象,比如g2设置为具有trans这种功能的“画笔”: g2.setTransform(trans);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1