首页 > 编程 > Java > 正文

Java设计图形与多媒体处理

2019-11-26 14:58:49
字体:
来源:转载
供稿:网友

本文实现了两个效果:

第一种,同心圆效果图:

/**  *程序要求:新建一个600*600像素的应用程序窗口,并在窗口中绘制5个不同颜色的同心圆,  *所有圆心都是屏幕的中心点,相邻两个圆直接的半径相差50像素  *效果图如下图所示(颜色随机设置),源程序保存为Ex7_1.java。  *作者:wwj  *日期:2012/4/25  *功能:显示一个有5个不同颜色的同心圆  **/   import javax.swing.*;  import java.awt.*;  import java.awt.Color;  public class Ex7_1 extends JFrame  {    int red,green,blue;    Color color;     public Ex7_1()    {      super("一个有5个不同颜色的同心圆");  //显示窗口名称      setSize(600,600);           //设置窗口大小      setVisible(true);           //设置为可见      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭动作       }        public void paint(Graphics g)    {      //第一个圆     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(175,175,250,250);     //第二个圆     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(200,200,200,200);     //第三个圆     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(225,225,150,150);     //第四个圆     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(250,250,100,100);     //第五个圆     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(275,275,50,50);     }           public static void main(String[] args)    {      Ex7_1 e = new Ex7_1();       }   } 

第二种,播放音乐和切换图片的小程序效果图:

/**  *程序要求:编写一个Applet的小程序,准备5幅图片和三个音乐文件,绘制到Applet中,  *并增加几个按钮,控制图片的切换、放大、缩小和音乐文件的播放。  *作者:wwj  *日期:2012/4/29  *参考:neicole  *功能:能进行图片和歌曲的选择变换的applet小程序  **/   import javax.swing.*;  import java.awt.*;  import java.awt.event.*;  import java.applet.Applet;  import java.applet.AudioClip;     public class Ex7_2 extends Applet implements ActionListener,ItemListener  {     //创建两个面板    JPanel p1=new JPanel();    JPanel p2=new JPanel();    JPanel p3=new JPanel();    //声音对象    AudioClip[] sound=new AudioClip[3];    int playingSong=0;    //切换图片的按钮    JButton lastPic=new JButton("上一张");    JButton setLarge=new JButton("放大");    JButton setLittle=new JButton("缩小");    JButton nextPic=new JButton("下一张");    //切换歌曲的按钮    JButton lastSound=new JButton("上一首");    JButton play=new JButton("播放");    JButton loop=new JButton("连续");    JButton stop=new JButton("停止");    JButton nextSound=new JButton("下一首");    //曲目下拉列表    JComboBox xx;    String names[]={ "曲目1.wav","曲目2.wav","曲目3.wav"};      //创建画布对象   MyCanvasl showPhotos;          public void init()    {      //窗口布局      this.setLayout(new BorderLayout());       //为图片控制按钮注册监听器      lastPic.addActionListener(this);      setLarge.addActionListener(this);      setLittle.addActionListener(this);      nextPic.addActionListener(this);       //向面板p1添加组件      p1.add(lastPic);      p1.add(setLarge);      p1.add(setLittle);      p1.add(nextPic);      p1.repaint();        //实例化下拉列表对象     xx = new JComboBox(names);     xx.addItemListener(this);      //为控制播放音乐按钮注册监听器     lastSound.addActionListener(this);     play.addActionListener(this);     loop.addActionListener(this);     stop.addActionListener(this);     nextSound.addActionListener(this);      for(int i=0;i<3;i++)      {       sound[i]=getAudioClip(getCodeBase(),"music/"+"曲目"           +Integer.toString(i+1)+".wav");      }                //向面板p2添加组件      p2.add(xx);      p2.add(lastSound);      p2.add(play);      p2.add(loop);      p2.add(stop);      p2.add(nextSound);      p2.repaint();          showPhotos = new MyCanvasl();     p3.add(showPhotos);      p3.repaint();      //把面板p1和p2分别布置到窗口的北部和南部       add(p1,BorderLayout.NORTH);      add(p2,BorderLayout.SOUTH);      add(p3,BorderLayout.CENTER);       this.repaint();     }      //按钮的事件处理    public void actionPerformed(ActionEvent e)    {           if(e.getSource() == lastPic){       showPhotos.changePhotoShow('P');     }     else if(e.getSource() == nextPic){       showPhotos.changePhotoShow('N');     }     else if(e.getSource() == setLarge){       showPhotos.changePhotoSize('B');     }     else if(e.getSource() == setLittle){       showPhotos.changePhotoSize('S');     }        else if(e.getSource()==lastSound){ //上一首       sound[playingSong].stop();       playingSong=(playingSong-1+3)%3;       xx.setSelectedIndex(playingSong);       sound[playingSong].play();      }     else if(e.getSource()==play){    //按下播放按钮       sound[playingSong].play();     }     else if(e.getSource()==loop){    //按下循环按钮       sound[playingSong].loop();     }     else if(e.getSource()==stop){    //按下停止按钮       sound[playingSong].stop();     }     else{                //下一首       sound[playingSong].stop();       playingSong=(playingSong+1)%3;       xx.setSelectedIndex(playingSong);       sound[playingSong].play();      }      }      //下拉列表的事件处理    public void itemStateChanged(ItemEvent e)    {            sound[playingSong].stop();      sound[playingSong]=getAudioClip(getCodeBase(),"music/"+xx.getSelectedItem());    }    class MyCanvasl extends Canvas   {          public Image[] img=new Image[5];      int MaxWidth = 600;     int MaxHeight = 500;     int nowImageIndex = 0;     int coordinateX = 0;     int coordinateY = 0;     int currentWidth = MaxWidth;     int currentHeight = MaxHeight;           MyCanvasl(){      setSize(MaxWidth,MaxHeight);      //获取当前目录下的图片      for(int i=0;i<5;i++){        img[i]=getImage(getCodeBase(),"image/"+Integer.toString(i+1)+".jpg");      }     }       private void changePhotoIndex(int index){       nowImageIndex = index;       changePhotoSize('M');     }        public void changePhotoShow(char command){       if('P' == command){         changePhotoIndex((nowImageIndex + 5 - 1 ) % 5);       }       else if('N' == command){         changePhotoIndex((nowImageIndex + 1) % 5);       }     }             public void changePhotoSize(char command){       if ('M' == command){         currentWidth = MaxWidth;         currentHeight = MaxHeight;       }       else if ('B' == command){         if(MaxWidth >= (currentWidth + 100) && MaxHeight >= (currentHeight + 100)){           currentWidth += 100;           currentHeight += 100;         }       }       else if('S' == command){         if((0 < (currentWidth - 100)) && (0 < (currentHeight - 100))){           currentWidth = currentWidth - 100;           currentHeight = currentHeight - 100;         }       }       coordinateX = (MaxWidth - currentWidth) / 2;       coordinateY = (MaxHeight - currentHeight) / 2;       repaint();     }       //paint方法用来在窗口显示图片    public void paint(Graphics g){       g.drawImage(img[nowImageIndex],coordinateX,coordinateY,currentWidth,currentHeight,this);     }   }  } 

 以上就是关于Java的图形设计以及多媒体处理的全部内容,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表