配色: 字号:
例代码-14
2013-01-25 | 阅:  转:  |  分享 
  
第十四章图形与图像



例子1

importjava.applet.;

importjava.awt.;

publicclassExample14_1extendsApplet

{publicvoidpaint(Graphicsg)

{g.drawOval(0,0,100,100);

g.drawRoundRect(110,10,90,60,50,30);

g.setColor(Color.black);

g.fillArc(0,0,100,100,-90,-180);

g.setColor(Color.white);

g.fillArc(0,0,100,100,-90,180);

g.fillArc(25,0,50,50,-90,-180);

g.setColor(Color.black);

g.fillOval(40,15,20,20);

g.fillArc(25,50,50,50,90,-180);

g.setColor(Color.white);

g.fillOval(40,65,20,20);

g.setColor(Color.black);

intpx[]={50,70,170};

intpy[]={120,150,80};

g.drawPolygon(px,py,3);

}

}





例子2

importjava.applet.;

importjava.awt.;

publicclassExample14_2extendsApplet

{Fontf1=newFont("隶书",Font.BOLD,28);

Fontf2=newFont("TimesRoman",Font.BOLD+Font.ITALIC,16);

publicvoidpaint(Graphicsg)

{g.setFont(f1);

g.drawString("计算机科学技术",10,30);

g.setFont(f2);

chara[]="ILoveYou".toCharArray();

intx=80,y=0;

for(inti=0;i
{y=x-15;

g.drawChars(a,i,1,x,y);

x=x+8;

}

}

}





例子3

importjava.applet.;

importjava.awt.;

importjava.awt.event.;

publicclassExample14_3extendsApplet

{inti=0;

publicvoidpaint(Graphicsg)

{i=(i+2)%360;

Colorc=newColor((3i)%255,(7i)%255,(11i)%255);

g.setColor(c);

g.fillArc(30,50,120,100,i,2);

g.fillArc(30,152,120,100,i,2);

try{Thread.sleep(300);

}

catch(InterruptedExceptione){}

repaint();

}

publicvoidupdate(Graphicsg)

{g.clearRect(30,152,120,100);

paint(g);

}

}





例子4

importjava.awt.;

importjava.applet.;

importjava.awt.geom.;

publicclassExample14_4extendsApplet

{publicvoidpaint(Graphicsg)

{g.setColor(Color.blue);

Graphics2Dg_2d=(Graphics2D)g;

Ellipse2Dellipse=

newEllipse2D.Double(20,30,100,50);

Line2Dline=newLine2D.Double(70,30,70,10);

g_2d.setColor(Color.red);

g_2d.draw(line);

for(inti=1,k=0;i<=6;i++)

{ellipse.setFrame(20+k,30,100-2k,50);

if(i<=5)

g_2d.draw(ellipse);

else

g_2d.fill(ellipse);

k=k+5;

}

}

}





例子5

importjava.awt.;

importjava.applet.;

importjava.awt.geom.;

publicclassExample14_4extendsApplet

{publicvoidpaint(Graphicsg)

{g.setColor(Color.red);

Graphics2Dg_2d=(Graphics2D)g;

Arc2Darc=

newArc2D.Double(2,2,80,80,0,270,Arc2D.OPEN);

g_2d.draw(arc);

arc.setArc(2,90,80,80,0,270,Arc2D.CHORD);

g_2d.draw(arc);

arc.setArc(90,2,80,80,0,270,Arc2D.PIE);

g_2d.fill(arc);

}

}





例子6

importjava.awt.;

importjava.applet.;

importjava.awt.geom.;

publicclassExample14_6extendsApplet

{publicvoidpaint(Graphicsg)

{Graphics2Dg_2d=(Graphics2D)g;

QuadCurve2DquadCurve=

newQuadCurve2D.Double(2,10,51,70,100,10);

g_2d.drawString("控制点",51,70);

Line2Dline=newLine2D.Double(2,10,51,70);

g_2d.draw(quadCurve);

g_2d.draw(line);

line.setLine(100,10,51,70);

g_2d.draw(line);

CubicCurve2DcubicCurve=

newCubicCurve2D.Double(2,96,40,180,70,50,136,96);

g_2d.draw(cubicCurve);

}

}





例子7

importjava.awt.;

importjava.applet.;

importjava.awt.geom.;

publicclassExample14_7extendsApplet

{

publicvoidpaint(Graphicsg)

{

Graphics2Dg_2d=(Graphics2D)g;

BasicStrokebs_1

=newBasicStroke(16,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

BasicStrokebs_2

=newBasicStroke(16f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);

BasicStrokebs_3

=newBasicStroke(16f,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_ROUND);

Line2DredLineOne=newLine2D.Double(0,16,120,16);

Line2DredLineTwo=newLine2D.Double(120,16,120,70);

g_2d.setStroke(bs_1);

g_2d.setColor(Color.red);

g_2d.draw(redLineOne);

g_2d.draw(redLineTwo);

g_2d.setColor(Color.blue);

Line2DblueLineOne=newLine2D.Double(0,40,85,40);

Line2DblueLineTwo=newLine2D.Double(85,40,85,80);

g_2d.setStroke(bs_2);

g_2d.draw(blueLineOne);

g_2d.draw(blueLineTwo);

g_2d.setColor(Color.green);

Line2DgreanLineOne=newLine2D.Double(0,80,65,80);

Line2DgreanLineTwo=newLine2D.Double(65,80,65,120);

g_2d.setStroke(bs_3);

g_2d.draw(greanLineOne);

g_2d.draw(greanLineTwo);



}

}





例子8

importjava.awt.;

importjava.applet.;

importjava.awt.geom.;

publicclassExampleextendsApplet

{publicvoidpaint(Graphicsg)

{Graphics2Dg_2d=(Graphics2D)g;

GradientPaintgradient_1

=newGradientPaint(0,0,Color.red,50,50,Color.green,false);

g_2d.setPaint(gradient_1);

Rectangle2Drect_1=newRectangle2D.Double(0,0,50,50);

g_2d.fill(rect_1);

GradientPaintgradient_2

=newGradientPaint(60,50,Color.white,150,50,Color.red,false);

g_2d.setPaint(gradient_2);

Rectangle2Drect_2=newRectangle2D.Double(60,50,90,50);

g_2d.fill(rect_2);

}

}





例子9

importjava.awt.;

importjava.applet.;

importjava.awt.geom.;

publicclassExample14_9extendsApplet

{publicvoidpaint(Graphicsg)

{Graphics2Dg_2d=(Graphics2D)g;

Strings="旋转起来";

Ellipse2Dellipse=

newEllipse2D.Double(30,30,80,30);

AffineTransformtrans=newAffineTransform();

for(inti=1;i<=24;i++)

{trans.rotate(15.0Math.PI/180,70,45);

g_2d.setTransform(trans);

//现在画的就是旋转后的椭圆样子

g_2d.draw(ellipse);

}

for(inti=1;i<=12;i++)

{trans.rotate(30.0Math.PI/180,60,160);

g_2d.setTransform(trans);

//现在画的就是旋转后的字符串

g_2d.drawString(s,60,160);

}

}

}





例子10

importjava.awt.geom.;

importjava.awt.;

importjava.applet.;

publicclassExample14_8extendsApplet

{publicvoidpaint(Graphicsg)

{Graphics2Dg_2d=(Graphics2D)g;

Ellipse2Dellipse=

newEllipse2D.Double(0,2,80,80);

Rectangle2Drect=

newRectangle2D.Double(40,2,80,80);

Areaa1=newArea(ellipse);

Areaa2=newArea(rect);

a1.intersect(a2);//"与"

g_2d.fill(a1);

ellipse.setFrame(130,2,80,80);

rect.setFrame(170,2,80,80);

a1=newArea(ellipse);

a2=newArea(rect);

a1.add(a2);//"或"

g_2d.draw(a1);

ellipse.setFrame(0,90,80,80);

rect.setFrame(40,90,80,80);

a1=newArea(ellipse);

a2=newArea(rect);

a1.subtract(a2);//"差"

g_2d.draw(a1);

ellipse.setFrame(130,90,80,80);

rect.setFrame(170,90,80,80);

a1=newArea(ellipse);

a2=newArea(rect);

a1.exclusiveOr(a2);//"异或"

g_2d.fill(a1);

}

}





例子11

importjava.awt.;

importjava.applet.;

importjava.awt.geom.;

publicclassExample14_11extendsApplet

{

publicvoidpaint(Graphicsg)

{

Graphics2Dg_2d=(Graphics2D)g;

Ellipse2Dellipse1=

newEllipse2D.Double(20,80,60,60),

ellipse2=

newEllipse2D.Double(40,80,80,80);

g_2d.setColor(Color.blue);

Areaa1=newArea(ellipse1),

a2=newArea(ellipse2);

a1.subtract(a2);//"差"

AffineTransformtrans=newAffineTransform();

for(inti=1;i<=10;i++)

{

trans.rotate(36.0Math.PI/180,95,105);

g_2d.setTransform(trans);

g_2d.fill(a1);

}

}

}





例子12

importjava.awt.;

importjava.awt.event.;

importjavax.swing.Timer;

importjava.awt.geom.;

importjava.util.;

classClockextendsCanvas

implementsActionListener

{Datedate;

TimersecondTime;

inthour,munite,second;

Line2DsecondLine,muniteLine,hourLine;

inta,b,c;

doublepointSX[]=newdouble[60],//用来表示秒针端点坐标的数组

pointSY[]=newdouble[60],

pointMX[]=newdouble[60],//用来表示分针端点坐标的数组

pointMY[]=newdouble[60],

pointHX[]=newdouble[60],//用来表示时针端点坐标的数组

pointHY[]=newdouble[60];

Clock()

{secondTime=newTimer(1000,this);

pointSX[0]=0;//12点秒针位置

pointSY[0]=-100;

pointMX[0]=0;//12点分针位置

pointMY[0]=-90;

pointHX[0]=0;//12点时针位置

pointHY[0]=-70;

doubleangle=6Math.PI/180;//刻度为6度

for(inti=0;i<59;i++)//计算出各个数组中的坐标

{pointSX[i+1]=pointSX[i]Math.cos(angle)-Math.sin(angle)pointSY[i];

pointSY[i+1]=pointSY[i]Math.cos(angle)+pointSX[i]Math.sin(angle);

pointMX[i+1]=pointMX[i]Math.cos(angle)-Math.sin(angle)pointMY[i];

pointMY[i+1]=pointMY[i]Math.cos(angle)+pointMX[i]Math.sin(angle);

pointHX[i+1]=pointHX[i]Math.cos(angle)-Math.sin(angle)pointHY[i];

pointHY[i+1]=pointHY[i]Math.cos(angle)+pointHX[i]Math.sin(angle);

}

for(inti=0;i<60;i++)

{pointSX[i]=pointSX[i]+120;//坐标平移

pointSY[i]=pointSY[i]+120;

pointMX[i]=pointMX[i]+120;//坐标平移

pointMY[i]=pointMY[i]+120;

pointHX[i]=pointHX[i]+120;//坐标平移

pointHY[i]=pointHY[i]+120;

}

secondLine=newLine2D.Double(0,0,0,0);

muniteLine=newLine2D.Double(0,0,0,0);

hourLine=newLine2D.Double(0,0,0,0);

secondTime.start();//秒针开始计时

}

publicvoidpaint(Graphicsg)

{for(inti=0;i<60;i++)//绘制表盘上的小刻度和大刻度

{intm=(int)pointSX[i];

intn=(int)pointSY[i];

if(i%5==0)

{g.setColor(Color.red);

g.fillOval(m-4,n-4,8,8);

}

else

{g.setColor(Color.cyan);

g.fillOval(m-2,n-2,4,4);

}

}

g.fillOval(115,115,10,10);//钟表中心的实心圆

Graphics2Dg_2d=(Graphics2D)g;

g_2d.setColor(Color.red);

g_2d.draw(secondLine);

BasicStrokebs=

newBasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);

g_2d.setStroke(bs);

g_2d.setColor(Color.blue);

g_2d.draw(muniteLine);

bs=newBasicStroke(6f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);

g_2d.setStroke(bs);

g_2d.setColor(Color.green);

g_2d.draw(hourLine);

}

publicvoidactionPerformed(ActionEvente)

{if(e.getSource()==secondTime)

{date=newDate();

Strings=date.toString();

hour=Integer.parseInt(s.substring(11,13));

munite=Integer.parseInt(s.substring(14,16));

second=Integer.parseInt(s.substring(17,19));//获取时间中的秒

inth=hour%12;

a=second;//秒针端点的坐标

b=munite;//分针端点的坐标

c=h5+munite/12;//时针端点的坐标

secondLine.setLine(120,120,(int)pointSX[a],(int)pointSY[a]);

muniteLine.setLine(120,120,(int)pointMX[b],(int)pointMY[b]);

hourLine.setLine(120,120,(int)pointHX[c],(int)pointHY[c]);

repaint();

}

}

}

publicclassExample14_12

{publicstaticvoidmain(Stringargs[])

{Framewin=newFrame();

win.add(newClock(),BorderLayout.CENTER);

win.setVisible(true);

win.setSize(246,280);

win.validate();

win.addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);

}

});

}

}





例子13

importjava.applet.;

importjava.awt.;

publicclassExample14_13extendsApplet

{Imageimg;

publicvoidstart()

{img=getImage(getCodeBase(),"vintdev.jpg");

}

publicvoidpaint(Graphicsg)

{g.drawImage(img,22,72,100,100,this);

}

}





例子14

importjava.awt.;

importjava.awt.event.;

classImagecanvasextendsCanvas

{Toolkittool;

Imageimage;

Imagecanvas()

{setSize(200,200);

tool=getToolkit();//得到一个Toolkit对象。

image=tool.getImage("dog.gif");//由tool负责获取图像。

}

publicvoidpaint(Graphicsg)

{g.drawImage(image,10,10,image.getWidth(this),image.getHeight(this),this);

}

publicImagegetImage()

{returnimage;

}

}

publicclassExample14_14

{publicstaticvoidmain(Stringargs[])

{Imagecanvascanvas=newImagecanvas();

Frameframe=newFrame();

frame.add(canvas,BorderLayout.CENTER);

frame.setSize(300,300);

frame.setVisible(true);

frame.setIconImage(canvas.getImage());

frame.validate();

frame.addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);

}

});

}

}





例子15

importcom.sun.image.codec.jpeg.;

importjava.awt.image.;

importjava.awt.;

importjava.util.;

importjava.awt.event.;

importjava.io.;

classPaintCanvasextendsCanvas

{intx=-1,y=-1;

Vectorv=newVector();

BufferedImageimage;

Graphics2Dg2D;

PaintCanvas()

{image=newBufferedImage(300,300,BufferedImage.TYPE_INT_RGB);

g2D=image.createGraphics();

addMouseMotionListener(newMouseMotionAdapter()

{publicvoidmouseDragged(MouseEvente)

{x=(int)e.getX();y=(int)e.getY();

Pointp=newPoint(x,y);

v.addElement(p);

if(x!=-1&&y!=-1)

{for(inti=0;i
{Pointp1=(Point)v.elementAt(i);

Pointp2=(Point)v.elementAt(i+1);

//在图像image上绘制

g2D.drawLine(p1.x,p1.y,p2.x,p2.y);

}

repaint();

}

}

}

);

addMouseListener(newMouseAdapter()

{publicvoidmouseReleased(MouseEvente)

{v.removeAllElements();

}

}

);

}

publicvoidpaint(Graphicsg)

{g.drawImage(image,0,0,this);//将内存中的图像iamge绘制在画布上

}

publicvoidupdate(Graphicsg)

{paint(g);

}

}

classWindowCanvasextendsFrameimplementsActionListener

{PaintCanvascanvas=newPaintCanvas();

Buttonbutton=newButton("save");

WindowCanvas()

{button.addActionListener(this);

add(canvas,BorderLayout.CENTER);

add(button,BorderLayout.NORTH);

setBounds(100,100,400,400);

setVisible(true);

}

publicvoidactionPerformed(ActionEvente)

{try{JPEGImageEncoderencoder=

JPEGCodec.createJPEGEncoder(newFileOutputStream("A.jpg"));

encoder.encode(canvas.image);

}

catch(Exceptionee){}

}

}

publicclassJPG

{publicstaticvoidmain(Stringargs[])

{newWindowCanvas();

}

}





例子16

importjava.awt.;importjava.applet.;

publicclassPaintTestextendsApplet

{publicvoidinit()

{setBackground(Color.yellow);

}

publicvoidpaint(Graphicsg)

{g.setXORMode(Color.red);

g.setColor(Color.green);

g.fillRect(20,20,80,40);

g.setColor(Color.yellow);

g.fillRect(60,20,80,40);

g.setColor(Color.green);

g.fillRect(20,70,80,40);

g.fillRect(60,70,80,40);

g.drawLine(100,100,200,200);

g.drawLine(100,100,220,220);//该直线消失

}

}





例子17

importjava.awt.;

importjava.awt.event.;

importjava.awt.geom.;

publicclassExample14_17

{publicstaticvoidmain(Stringargs[])

{Framef=newFrame();

f.setSize(170,170);

f.setVisible(true);

f.addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);

}

});

PrintJobp=f.getToolkit().getPrintJob(f,"ok",null);

Graphicsg=p.getGraphics();

g.drawRect(30,30,40,40);

g.dispose();

p.end();

}

}





献花(0)
+1
(本文系liyi039首藏)