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

上传人:小飞机 文档编号:6509230 上传时间:2023-11-07 格式:PPT 页数:28 大小:823.50KB
返回 下载 相关 举报
Java2D-图形备忘(Java多媒体).ppt_第1页
第1页 / 共28页
Java2D-图形备忘(Java多媒体).ppt_第2页
第2页 / 共28页
Java2D-图形备忘(Java多媒体).ppt_第3页
第3页 / 共28页
Java2D-图形备忘(Java多媒体).ppt_第4页
第4页 / 共28页
Java2D-图形备忘(Java多媒体).ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《Java2D-图形备忘(Java多媒体).ppt》由会员分享,可在线阅读,更多相关《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包下常量:Col

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

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

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

5、rLayout();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)ShapeFrame pf=new ShapeFrame(图形处理);,练习画布和颜色,public class ShapeCanvas extends Canvas ShapeCanvas()

6、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(Color.green);g2.draw(ellipse);,练习其他图形,/直线 前两个参数是起始点,后两个参数是结束点Line2D line=new Line2D.Double(70,30,70,10);g2.setC

7、olor(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);/圆角矩形RoundRectangle2D rrec=new RoundRectangle2D.Double(50,50,300,500,20,20);g2.setColor(Color.blue);g2.draw(rrec);,Java2D基本图形,5绘制圆弧使用包中

8、的Arc2D.Double类创建一个圆弧对象:Arc2D ellipse=new Arc2D.Double(50,30,300,50,0,100,Arc.PIE);上述语句创建了一个外接矩形的左上角坐标是(50,30),宽是300,高是50的起始角是0度终止角是100度的饼弧对象。其中,最后一个参数取值: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

9、.setArc(100,0,90,90,0,270,Arc2D.CHORD);/弓弧g2.draw(arc);arc.setArc(200,0,90,90,0,-270,Arc2D.PIE);/饼弧g2.draw(arc);,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 Fo

10、nt(隶书,Font.BOLD,28);Font f2=new Font(Comic Sans MS,Font.BOLD+Font.ITALIC,16);g2.setFont(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_BEV

11、EL,or JOIN_MITER三个值。默认端点使用CAP_SQUARE,默认连接使用JOIN_MITER,画笔粗细,画笔粗细,设置画笔宽度为3BasicStroke 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)进

12、行渐变。,渐进填充,/渐变填充椭圆Ellipse2D ellipse=new Ellipse2D.Double(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类平铺一个图像来填充图形。构造函数接收一个和一个Rectangle2D,把图像影射到矩形里,然后平铺矩形。建立一个BufferedImage来保存图像相对是更直接的方法。在Buff

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

14、色)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);,图形旋转,AffineTransform类来实现对图形的这些操作。(1)首先使用AffineTra

15、nsform类创建一个对象: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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号