三次贝塞尔曲线
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
练习45 三次贝塞尔曲线
一、练习具体要求
本例制作二维图形三次贝塞尔曲线。效果如图45-1所示。执行本例实例后,将创建一个绘有三次贝塞尔曲线的帧。本实例的知识点有:Graphics2D 类和Rectangular 类的应用,曲线绘制的方法。
二、程序及注释
(1)编程思路: java2中Graphics2D 中绘图的第一步是用setColor(),setFont(),setPointMode ,setXORMODE()之类的方法制定绘图属性,第二步生成一个shape 接口的对象,指定要画的形体,第三步是绘图。绘制形体是用三个Graphics2D 方法完成的。Chip()方法将绘图区缩小到指定形体与当前剪接区的交接部分,影响后面的绘图操作。Draw()方法用当前Stroke 绘制Shape 的外形。Fill()方法用当前Point 模式填充Shape 。CubicCurve2D 类生成三次曲线,他与其他曲线类不同,不是描述闭合形体,而是描述曲线。曲线类用贝塞尔曲线定义曲线上的实际点。生成曲线后,应用Draw()或Fill()方法,可以把起点和终点看成相连接的,从而得到闭合区域。
(2) 程序实现及注释:
//ExitableJFrame.java
import javax.swing.*;
public class ExitableJFrame extends JFrame{
//构造函数
public ExitableJFrame(){
}
//带窗口标题的构造函数
public ExitableJFrame(String title){
super(title);
}
//窗口的初始化
本例
知识
点
一句话讲解新学
知识编写Graphics2D 类
绘制图形使用CubicCurve2D 类
绘制图形已学
知识使用Graphics 类
画屏幕图像使用String 类管理字符串
protected void frameInit(){
super.frameInit();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
//Cubic.java
import java.awt.*;
import java.awt.geom.*;
public class Cubic extends ExitableJFrame{
//画屏函数
public void paint(Graphics g){
//实例化Graphics2D类
Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
//设置颜色
g2d.setPaint(Color.blue);
g2d.setStroke(new BasicStroke(3));
//CubicCurve2D
CubicCurve2D cubic = new CubicCurve2D.Float(10,80,60,30,110,130,160,80);
g2d.draw(cubic);
cubic = new CubicCurve2D.Float(60,205,150,120,20,120,110,205);
g2d.fill(cubic);
cubic = new CubicCurve2D.Float(160,130,210,30,260,30,310,130);
g2d.fill(cubic);
cubic = new CubicCurve2D.Float(160,130,260,230,210,230,310,130);
g2d.fill(cubic);
//设置颜色
g.setColor(Color.black);
//填充颜色
g.fillRect(58,28,5,5);
g.fillRect(108,128,5,5);
g.fillRect(148,118,5,5);
g.fillRect(18,118,5,5);
g.fillRect(208,28,5,5);
g.fillRect(258,28,5,5);
g.fillRect(258,228,5,5);
g.fillRect(208,228,5,5);
}
//主函数
public static void main(String args[]){
Frame f = new Cubic();
f.setTitle("Cubic");
f.setSize(350,350);
f.show();
}
}
三、练习效果(如图45-1所示)
本实例代码编写完毕,分别存盘为:C: j2sdk1.4.0\javaprograms\ ExitableJFrame.java 和Cubic.java。打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到javaprograms目录,输入javac ExitableJFrame.java 和javac Cubic.java来编译程序,用java Cubic命令便可以看到制作效果。
图45-1练习效果