JAVA图形与多媒体处理 实验

实验 8 图形与多媒体处理
一、实验目的
熟悉图形、图像的使用方法,理解计算机动画的原理和 java 的多线程处理机制,能够编写 applet中使用的动画。
二、实验要求
1. 掌握使用图形类 graphics 画出不同图形的方法。
2. 掌握在容器中输入图像、播放音乐的方法。
3. 理解计算机动画原理,掌握图形双缓冲技术,能够设计计算机动画。
4. 理解多线程机制,掌握线程的使用方法。
三、实验内容
(一)使用图形类 graphics
在 java 中基本图形包括点、线、圆、矩形等,是构成复杂图形的基础。绘制基本图形要使用 awt包中的 graphics 类,它提供了各种基本图形的绘制方法,可以直接引用这些方法画点、线、圆、矩形等。
1.创建在 applet 上画出不同的图形的程序
¨程序功能:在 applet 上使用不同的颜色画出直线、圆、方块、圆弧等图形。
¨编写 ky8_1.java 程序文件,源代码如下。
import java.applet.applet;
import java.awt.graphics;
import java.awt.color;
public class ky7_1 extends applet {
public void paint(graphics g) {
g.drawline(10,10,50,10);//画线(确定两点)
g.setcolor(color.red);//设置红颜色
g.drawoval(35,35,100,60);//画椭圆(圆心、宽和高)
g.filloval(200,15,60,100);//画具有填充色的圆
g.setcolor(color.blue);//设置蓝颜色
g.drawrect(20,130,80,80);//画矩形
g.fillrect(120,130,80,80);//画具有填充色的矩形
g.drawroundrect(220,130,80,80,20,20);//画圆角矩形
g.fillroundrect(320,130,80,80,20,20);//画具有填充色的圆角矩形
g.setcolor(new color(255,255,0)); //设置黄颜色
g.drawarc (250,20,100,100,0,90);
g.fillarc (380,20,100,100,90,90);
g.fillarc (300,25,100,100,180,90);
g.drawarc (330,25,100,100,0,-90);
}
}
¨编译程序 ky8_1.java。
¨编写显示 ky8_1.class 的页面文件,在浏览器中显示结果如图 7.1 所示。
2.创建使用画布对象的 applet 应用程序
¨程序功能:创建一个带有多边形、圆的自定义画布类,在 applet 上显示自定义画布的对象。
¨编写 ky8_2.java 程序文件,源代码如下。
import java.applet.applet;
import java.awt.*;
import java.awt.color;
public class ky8_2 extends applet {
public void init() {
color col=new color(20,55,75);
setbackground(col);//设置 applet 的背景色
setforeground(color.yellow);//设置 applet 的前景色
mycanvas1 c=new mycanvas1();//创建画布对象
c.setbackground(color.white);//设置画布的背景色
c.setsize(300,200);//设置画布的大小
add(c);
}
}
class mycanvas1 extends canvas {
public void paint(graphics g) {
g.setcolor(color.red);
g.filloval(40,20,80,80);//画圆
g.setcolor(color.cyan);//设置青色
int p1x[]={20,20,100,20};//多边形的 x 坐标
int p1y[]={20,80,20,20};//多边形的 y 坐标
int p1=3;//多边形的边数
g.fillpolygon (p1x,p1y,p1);//画填充多边形
int p2x[]={280,120,50,90,210,280};
int p2y[]={20,50,100,110,70,20};
int p2=5;
g.drawpolygon (p2x,p2y,p2);//画多边形
}
}
¨编译程序 ky8_2.java。
¨编写显示 ky8_2.class 的页面文件,在浏览器中显示结果
(二)插入图像与播放音乐
1.在 applet 中插入图像播放音乐
¨程序功能:在 applet 中插入 3 种大小的图像,并在打开文件时部分背景音乐。
¨编写 ky8_3.java 程序文件,源代码如下。
import java.awt.*;
import java.applet.*;
public class ky8_3 extends applet {
image img;
public void init(){
img=getimage(getcodebase(),image/飞机.gif);
//获取图像文件地址读取图 像文件到内存
play(getdocumentbase(),wav/sound.wav); //播放声音文件
}
public void paint(graphics g){
int w=img.getwidth(this);
int h=img.getheight(this);
g.drawimage(img,20,10,this); // 画出原图
g.drawimage(img,20,100, w/2, h/2, this); // 画出缩小一倍的图
g.drawimage(img,160,0, w*2, h*2, this); // 画出放大一倍的图
}
}
¨编译程序 ky8_3.java。
¨编写显示 ky8_3.class 的页面文件。
2.随时播放声音文件的程序
¨程序功能:在 applet 中使用下拉框显示音乐文件的名字,在程序中使用 audioclip 类控制播放的音乐文件,使用“播放”、“连续”、“停止”按钮控制和选择播放音乐的状态。
¨编写 ky8_4.java 程序文件,源代码如下。
import java.awt.*;
import java.awt.event.*;
import java.applet.applet;
import java.applet.audioclip;
public class ky8_4 extends applet implements itemlistener, actionlistener {
audioclip sound;
choice c=new choice();
button play=new button(播放);
button loop=new button(连续);
button stop=new button(停止);
public void init() {
c.add(space.au); c.add(flute.aif); c.add(trip.mid);
c.add(jungle.rmf); c.add(sound.wav);
add(c); c.additemlistener(this);
add(play); add(loop); add(stop);
play.addactionlistener(this);
loop.addactionlistener(this);
stop.addactionlistener(this);
sound=getaudioclip(getcodebase(), wav/sound.wav);
}
public void itemstatechanged(itemevent e) {
sound.stop();
sound=getaudioclip(getcodebase(), wav/+c.getselecteditem());
}
public void actionperformed(actionevent e) {
if (e.getsource()==play) sound.play();
else if (e.getsource()==loop) sound.loop();
else if (e.getsource()==stop) sound.stop();
}
}
¨编译程序 ky8_4.java。
¨编写显示 ky8_4.class 的页面文件,在浏览器中显示结果

工业智能网关BL110应用之64:如何实现智能楼宇控制BACnet 接入金鸽MQTT云平台
最大限度地减少Ćuk调节器的排放
怎么制动电机?BLDC到底有哪些快速制动方法呢?具体怎么操作呢?
3GPP为 5G 定位扩展到更多应用场景和领域构建了基础条件
华为麒麟990 5G荣获“最佳5G芯片奖”
JAVA图形与多媒体处理 实验
高速低功耗数字光电耦合器(Avago)
铁路变压器如何进行检修?变压器的过电保护电路该如何设计?
全球半导体市场供过应求,唯有汽车芯片需求依然强劲?
乌镇配电房无线多跳自组网技术为能源大脑赋能智慧城市建设奠定了基础
MEMS行业面临哪些主要挑战?
数之联创始人周涛:“道阻且长,行则将至”,数据要素流通体系构建的成都经验
胎压监测系统将成国内汽车安全的标配
物联网技术的大量普及与飞速发展将引发智慧商业物种大爆发
GSMA大中华区总裁斯寒:GSMA将焦点转移到了中国
数据结构中堆栈出栈序列问题解析
北京通信行业聚合产业伙伴构建5G产业生态,推动5G成熟发展
区块链运用于无人驾驶系统的优势分析
HDMI传输原理详解
分享简易人体自动感应开关电路