JAVA 图形图像与多媒体详解Word文档下载推荐.docx
- 文档编号:18167630
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:30
- 大小:410.46KB
JAVA 图形图像与多媒体详解Word文档下载推荐.docx
《JAVA 图形图像与多媒体详解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JAVA 图形图像与多媒体详解Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
风格可以组合使用,例如,Font.BOLD+Font.ITALIC。
字号是字的大小,单位是磅。
在Java语言中,用类Font对象设置字型。
Font类的构造方法有:
Font(StringfontName,intstyle,intsize),3个参数分别表示字体、风格和字号。
例如,代码:
FontfnA=newFont(“细明体”,Font.PLAIN,12)
设置的字型是:
细明体、正常风格,12磅字号。
Font类的其他常用方法:
(1)getStyle(),返回字体风格。
(2)getSize(),返回字体大小。
(3)getName(),返回字体名称。
(4)isPlain(),测试字体是否是正常字体。
(5)isBold(),测试字体是否是粗体。
(6)isItalic(),测试字体是否是斜体。
使用Graphics的方法setFont(Fontfont)设置字型。
【例7.1】小应用程序用6种字型显示字符串,显示内容说明本身的字型。
importjava.applet.*;
importjava.awt.*;
publicclassExample7_1extendsApplet{
Fontf1=newFont("
Helvetica"
Font.PLAIN,18);
Fontf2=newFont("
Font.BOLD,10);
Fontf3=newFont("
Font.ITALIC,12);
Fontf4=newFont("
Fontf5=newFont("
Courier"
Font.BOLD+Font.ITALIC,14);
Fontf6=newFont("
Dialog"
Font.ITALIC,14);
publicvoidpaint(Graphicsg){
g.setFont(f1);
g.drawString("
18ptplainHelvetica"
5,20);
g.setFont(f2);
10ptboldHelvetica"
5,43);
g.setFont(f3);
12ptitalicHelvetica"
5,58);
g.setFont(f4);
12ptplainCourier"
5,75);
g.setFont(f5);
14ptbold&
italicTimesRoman"
5,92);
g.setFont(f6);
14ptitalicDialog"
5,111);
}
}
用类Color的对象设置颜色,有两种方法生成各种颜色。
一是用类Color预定义的颜色:
black、red、white、yellow……;
二是通过红绿蓝(RGB)的值合成颜色。
与颜色有关的常用方法:
(1)用类Color的构造方法Color(intR,intG,intB)创建一个颜色对象,参数R、G、B分别表示红色、绿色和蓝色,它们的取值是从0到255。
(2)用类Graphics的方法setColor(Colorc),参数c的取值参见表7-1。
(3)用类Component的方法setBackground(Colorc)设置背景颜色。
因为小程序是组件的子类,直接可用setBackground()方法改变背景色。
(4)用类Graphics的方法getColor()获取颜色。
表7-1Color类预定义颜色常量
black
blue
cyan
darkGray
gray
green
lighGray
magenta
orange
pink
red
while
yellow
【例7.2】小应用程序设置颜色并涂方块,其中绘制方块的方法参见7.2节。
publicclassExample7_2extendsApplet{
setSize(380,200);
for(inti=0;
i<
=10;
i++){
Colormyredcolor=newColor(i*25+5,0,0);
g.setColor(myredcolor);
g.fillRect(i*32+5,2,28,28);
//用指定的颜色填充方块
}
Colormygreencolor=newColor(0,i*25+5,0);
g.setColor(mygreencolor);
g.fillRect(i*32+5,32,28,28);
Colormybluecolor=newColor(0,0,i*25+5);
g.setColor(mybluecolor);
g.fillRect(i*32+5,62,28,28);
7.1.3绘图描述
绘图模式是指后绘制的图形与早先绘制的图形有重叠时,然后确定重叠部分的颜色。
例如,后绘制的覆盖早先绘制的;
或者后绘制与早先绘制的两种颜色按某种规则混合。
主要有正常模式和异或模式两种:
●正常模式:
是指后绘制的图形覆盖绘制在早先绘制的图形之上,使早先绘制的图形的重叠部分不可再见。
●异或模式:
是指把绘图看作是按图形着色。
异或模式绘图时,将当前正要绘图的颜色、原先绘制的颜色以及异或模式设定的颜色作特定的运算,得到实际绘图颜色。
设置绘图模式的方法有:
(1)setPaintMode(),设置绘图模式为覆盖模式(正常模式)。
正常模式是绘图的默认模式。
(2)setXORMode(Color),设置绘图模式为异或模式,参数c为异或模式设定的绘图颜色。
设背景色为B,用setXORMode()设置的颜色为C,另用某个背景色D绘图,XOR模式有以下确定实际绘图颜色的法则:
B+B=C,用背景色绘图,出现C颜色。
D+D=B,当一个图形重画时就能清除原先所画的图形。
B+D=B和D的混合色(当B,D不相同时)。
如果某区域已用D着色,再用E着色,则结果是:
D+E=D和E的混合色(当D、E不相同时)。
XOR绘图模式实例参见7.2.1节的例7.4。
7.2绘图
Graphics类提供基本绘图方式,Graphics类提供更强大的绘图能力。
7.2.1Graphics类的绘图方法
Graphics类提供基本的几何图形绘制方法,主要有:
画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等。
(1)画线段
在窗口中画一条线段,可以使用Graphics类的drawLine()方法:
●drawLine(intx1,inty1,intx2,inty2)
例如,以下代码在点(3,3)与点(50,50)之间画线段,在点(100,100)处画一个点。
g.drawLine(3,3,50,50);
画一条线段
g.drawLine(100,100,100,100);
画一个点
(2)画矩形
有两种矩形:
普通型和圆角型。
画普通矩形有两种方法:
●drawRect(intx,inty,intwidth,intheight)
画线框围起来的矩形。
其中参数x和y指定矩形左上角的位置,参数width和height是矩形的宽和高。
●fillRect(intx,inty,intwidth,intheight)
用预定的颜色填充一个矩形,得到一个着色的矩形块。
以下代码是画矩形的例子:
g.drawRect(80,100,40,25);
//画线框
g.setColor(Color.yelloe);
g.fillRect(20,20,20,30);
//画着色块
画圆角矩形也有两个方法:
●drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)
是用线围起来的圆角矩形。
其中参数x和y指定矩形左上角的位置;
参数width和height是矩形的宽和高;
arcWidth和arcHeight分别是圆角弧的横向直径和圆角弧的纵向直径。
●fillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)
是用预定的颜色填充的圆角矩形。
各参数的意义同前一个方法。
以下代码是画矩形的例子:
g.drawRoundRect(10,10,150,70,40,25);
//画一个圆角矩形
g.setColor(Color.blue);
g.fillRoundRect(80,100,100,100,60,40);
//涂一个画角矩形块
g.drawRoundRect(10,150,40,40,40,40);
//画圆
g.setColor(Color.red);
g.fillRoundRect(80,100,100,100,100,100);
//涂画块
可以用画圆角矩形方法画圆形,当矩形的宽和高相等,圆角弧的横向直径和圆角弧的纵向直径也相等,并等于矩形的宽和高时,画的就是圆形。
参见上述例子中的注释,前一个是画圆,后一个是涂圆块。
(3)画三维矩形
画三维矩形有两个方法:
●draw3DRect(intx,inty,intwidth,intheight,booleanraised)
画一个突出显示的矩形。
其中参数x和y指定矩形左上角的位置,参数width和height是矩形的宽和高,参数raised是突出与否。
●fill3DRect(intx,inty,intwidth,intheight,booleanraised)
用预订的颜色填充一个突出显示的矩形。
以下代码是画突出矩形的例子:
g.draw3DRect(80,100,40,25,true);
//画一个线框
g.fill3DRect(20,70,20,30,ture);
//画一个着色块
(4)画椭圆形
椭圆形由椭圆的横轴和纵轴确定。
画椭圆形有两个方法:
●drawOval(intx,inty,intwidth,intheight)
是画用线围成的椭圆形。
其中参数x和y指定椭圆形左上角位置,参数width和height是横轴和纵轴。
●fillOval(intx,inty,intwidth,intheight)
是用预订的颜色填充椭圆形,是一个着色块。
也可以用画椭圆形方法画圆形,当横轴和纵轴相等时,所画的椭圆形即为圆形。
以下代码是画椭圆形的例子。
g.drawOval(10,10,60,120);
//画椭圆
g.setColor(Color.cyan);
g.fillOval(100,30,60,60);
//涂圆块
g.setColor(Color.magenta);
g.fillOval(15,140,100,50);
//涂椭圆
(5)画圆弧
画圆弧有两个方法:
●drawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)
画椭圆的一部分的圆弧线。
椭圆的中心是它的外接矩形的中心,其中参数是外接矩形的左上角坐标(x,y),宽是width,高是height。
参数startAngle和arcAngle的单位是“度”。
起始角度0度是指3点钟方位。
参数startAngle和arcAngle表示从startAngle角度开始,逆时针方向画arcAngle度的弧。
约定,正值度数是逆时针方向,负值度数是顺时针方向,例如-90度是6点钟方位。
●fillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)
用setColor()方法设定的颜色,画着色椭圆的一部分。
以下代码是画圆弧的例子:
g.drawArc(10,40,90,50,0,180);
//画圆弧线
g.drawArc(100,40,90,50,180,180);
//画圆弧线
g.fillArc(10,100,40,40,0,-270);
//填充缺左上角的四分之三椭圆
g.fillArc(60,110,110,60,-90,270);
//填充缺左下角的四分之三椭圆
g.fillArc(130,20,40,40,0,360);
//填充圆
(6)画多边形
多边形是用多条线段首尾连接而成的封闭平面图。
多边形线段端点的x坐标和y坐标分别存储在两个数组中,画多边形就是按给定的坐标点顺序用直线段将它们连起来。
以下是画多边形常用的两个方法:
●drawPolygon(intxPoints[],inty,intyPoints[],intnPoints)
画一个多边形。
●fillPolygon(intxPoints[],inty,intyPoints[],intnPoints)
用方法setColor()设定的颜色着色多边形。
其中数组xPoints[]存储x坐标点,yPoints[]存储y坐标点,nPoints是坐标点个数。
注意,上述方法并不自动闭合多边形,要画一个闭合的多边形,给出的坐标点的最后一点必须要与第一点相同。
以下代码实现填充一个三角形和画一个八边形。
intpx1[]={50,90,10,50};
//首末点相重,才能画出多边形
intpy1[]={10,50,50,10};
intpx2[]={140,180,170,180,140,100,110,100,140};
intpy2[]={5,25,35,45,65,45,35,25,5};
g.fillPolygon(px1,py1,4);
g.drawPolygon(px2,py2,9);
也可以用多边形对象画多边形。
用多边形类Polygon创建一个多边形对象,然后用这个对象绘制多边形。
Polygon类的主要方法:
1Polygon(),创建多边形对象,暂时没有坐标点。
2Polygon(intxPoints[],inty,intyPoints[],intnPoints[]),用指定的坐标点创建多边形对象。
3addPoint(),将一个坐标点加入到Polygon对象中。
4drawPolygon(Polygonp),绘制多边形。
5fillPolygon(Polygonp),用指定颜色填充多边形。
例如,以下代码,画一个三角形和填充一个黄色的三角形。
注意,用多边形对象画封闭多边形不要求首末点重合。
intx[]={140,180,170,180,140,100,110,100};
inty[]={5,25,35,45,65,45,35,25};
Polygonpolygon1=newPolygon();
polygon1.addPoint(50,10);
polygon1.addPoint(90,50);
polygon1.addPoint(10,50);
g.drawPolygon(polygon1);
g.setColor(Color.yellow);
Polygonpolygon2=newPolygon(x,y,8);
g.fillPolygon(polygon2);
(7)擦除矩形块
当需要在一个着色图形的中间有一个空缺的矩形块的情况,可用背景色填充一个矩形块实现,相当于在该矩形块上使用了“橡皮擦”。
实现的方法是:
●clearRect(intx,inty,intwidth,intheight)
擦除一个由参数指定的矩形块的着色。
例如,以下代码实现在一个圆中擦除一个矩形块的着色:
g.setOval(50,50,100,100);
g.clearRect(70,70,40,55);
(8)限定作图显示区域
用一个矩形表示图形的显示区域,要求图形在指定的范围内有效,不重新计算新的坐标值,自动实现超出部分不显示。
方法是:
●clipRect(intx,inty,intwidth,intheight)
限制图形在指定区域内的显示,超出区域的图形不显示。
多个限制区域有覆盖时,得到限制区域的交集区域。
g.clipRect(0,0,100,50);
g.clipRect(50,25,100,50);
相当于
g.clipRect(50,25,20,25);
(9)复制图形
利用Graphics类的方法copyArea()可以实现图形的复制,其使用格式是:
●copyArea(intx,inty,intwidth,intheight,intdx,intdy)
dx和dy分别表示将图黏贴到原位置偏移的像素点数,正值为往右或往下偏移量,负值为往左或往上偏移量。
位移的参考点是要复制矩形的左上角坐标。
例如,以下代码示意图形的复制,将一个矩形的一部分、另一个图形的全部分别复制。
g.clipRect(10,10,60,90);
g.fillRect(90,10,60,90);
g.copyArea(40,50,60,,70,,-20,,80);
g.copyArea(110,50,60,,60,,10,,80);
【例7.3】小应用程序重写update()方法,只清除圆块,不清除文字。
窗口显示一个不断移动的红色方块。
publicclassExample7_3extendsApplet{
inti=1;
publicvoidinit(){
setBackground(Color.yellow);
i=i+8;
if(i>
160)i=1;
g.setColor(Color.red);
g.fillRect(i,10,20,20);
g.drawString("
我正在学习update()方法!
"
100,100);
try{
Thread.sleep(100);
//程序暂停0.1秒
}
catch(InterruptedExceptione){}
repaint();
publicvoidupdate(Graphicsg){
g.clearRect(i,10,200,100);
//不清除“我正在学习update()方法!
”
paint(g);
一般的绘图程序要继承JFrame,定义一个JFrame窗口子类,还要继承JPanel,定义一个JPanel子类。
在JPanel子类中重定义方法paintcomponent(),在这个方法中调用绘图方法,绘制各种图形。
【例7.4】使用XOR绘图模式的应用程序,绘图效果参见图7.2。
importjavax.swing.*;
publicclassExample7_4extendsJFrame{
publicstaticvoidmain(Stringargs[]){
GraphicsDemomyGraphicsFrame=newGraphicsDemo();
classShapesPanelextendsJPanel{
ShapesPanel(){
setBackground(Color.white);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 图形图像与多媒体详解 图形图像 多媒体 详解