201711671125 《Java程序设计》第13周学习总结(第十四章)

教材学习内容总结

第十四章

  1. 绘制基本图形

1.1直线

使用java.awt.gemo包中的Line2D的静态内部类Double

new Line2D.Double(double x1,double y1,double x2,double y2);

1.2矩形

使用Rectangle2D.Double类

new Rectangle2D.Double(double x,double y,double w,double h);

(x,y)是左上角坐标,w是宽,h是高

1.3圆角矩形

使用RoundRectangle2D.Double类

new RoundRectangle2D.Double(double x,double y,double w,double h,double arcw,double arch)

圆角的长轴和短轴分别为arcw和arch的圆角矩形对象。

1.4椭圆

使用Ellipse2D.Double类

new Ellipse2D.Double(double x,double y,double w,double h)

1.5绘制圆弧

使用Arc2D.Double类

new Arc2D.Double(double x,double y,double w,double h,double start,double extent,int type)

1.6绘制文本

调用drawString(String s,int x,int y)方法

1.7绘制二次曲线和三次曲线

二次曲线使用y(x)=ax2+bx+c来表示。

QuadCurve2D curve=new QuadCurve2D.Double(50,30,10,10,50,100)

三次曲线使用y(x)=ax3+bx2+cx+d。

CubicCurve2D curve=new CubicCurve2D.Double(50,30,10,10,100,100,50,100)

1.8绘制多边形

使用java.awt包中的Polygon类

Polygon polygon=new Polygon();

  1. 变换图形

有时需要平移、缩放或旋转一个图形。可以使用AffineTransform类来实现对图形的这些操作。

  1. 实现创建一个对象

AffineTransform trans=new AffineTransform();

translate(double a,double b)

scale(double a,double b)

rotate(double number,double x,double y)

  1. 进行需要的变换
  2. 把Graphics对象,设置为具有trans功能的“画笔”。
  1. 图形的布尔运算

通过基本图形的布尔运算可以得到更为复杂的图形,假设T1,T2是两个图形

T1和T2的布尔“与”(AND)运算的结果是两个图形的重叠部分。

T1和T2的布尔“或”(OR)运算的结果是两个图形的重合。

T1和T2的布尔“差”(NOT)运算的结果是T1去掉T2的重叠部分。

T1和T2的布尔“异或”(XOR)运算的结果是两个图形的非重叠部分。

两个图形进行布尔运算运算之前,必须分别用这两个图形创建两个Area区域对象。

  1. 绘制钟表

钟表可以显示当前本机的时间。在这里要用到一个数学公式,如果一个圆的圆心是(0,0),那么对于给定圆上的一点(x,y),该点按顺时针旋转α弧度后的的坐标(m,n)由下列公式计算:

m = x×cos(α)-y×sin(α)

n = y×cos(α)+x×sin(α)

  1. 绘制图像

使用Graphics绘制图像,步骤如下:

  1. 加载图像
  2. 绘制图像
  1. 播放音频

Java可以编写播放.au、.aiff、.wav、.midi、.rfm格式的音频程序。

播放音频的步骤如下。

(1)创建File对象

 File musicFile=new File("hello.wav");

(2)获取URI对象(URI类属于java.net包)

 URI uri=musicFile.toURI();

(3)获取URL对象

 URI url=uri.toURL();

(4)创建音频对象(AudioClip和Applet类属于java.applet包)

 AudioClip clip=Applet.newAudioClip(url);

(5)播放,循环与停止

 clip.play()  开始播放,

 clip.loop()  循环播放,

 clip.stop()  停止播放。

教材学习中的问题和解决过程

注意绘制各图形应该使用的方法,此外还有布尔运算的使用。

代码调试中的问题和解决过程

上机运行例子,能更直观的感受到所使用的方法。

其他

还是要多敲代码才可以啊。

学习进度条

 

代码行数(新增/累积)

博客量(新增/累积)

学习时间(新增/累积)

重要成长

目标

2000行

10篇

80小时

 

第一周

67/67

1/1

8/8

 

 

第十三周

290/3681

1/13

6/101

 

 

参考资料

《Java2实用教程(第5版)》

猜你喜欢

转载自blog.csdn.net/Ulong_/article/details/85028585