Java设计图形与多媒体处理

本文实现了两个效果:

第一种,同心圆效果图:

/**
 *程序要求:新建一个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的图形设计以及多媒体处理的全部内容,希望对大家的学习有所帮助。

(0)

相关推荐

  • Java常用的一些多媒体文件基本操作方法简介

    播放幻灯片和动画 用实例说明播放幻灯片和动画的方法. [例]小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示. import java.applet.*import java.awt.*; import java.awt.event.*; public class Example7_7 extends Applet implements MouseListener{ final int number = 50; //假定幻灯片有50张 int count = 0; Image[]

  • java微信开发之上传下载多媒体文件

    回复图片.音频.视频消息都是需要media_id的,这个是需要将多媒体文件上传到微信服务器才有的. 将多媒体文件上传到微信服务器,以及从微信服务器下载文件,可以参考:http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件 上传下载多媒体文件的方法还是写到WeixinUtil.java中. 代码如下: import java.io.BufferedOutputStream; import java.io.BufferedReader; impo

  • Android的多媒体管理库Glide的基本使用示例

    Glide 是一个android平台上的快速和高效的开源的多媒体资源管理库, 提供 多媒体文件的压缩,内存和磁盘缓存, 资源池的接口. Glide 支持获取,解压展示视频, 图像和GIFs,  Glide有一个可弹性的api可以让开发者自定义网络栈技术, 默认使用HttpUrlConnection , 你可以替换为  Google's Volley或者 OkHttp Glide 开始的目的是提供一个快速和平滑展示图片列表, 但是Glide对你需要拉取, resize 和展示远程的图片这些场景都是

  • js HTML5多媒体影音播放

    之前曾经介绍过,在HTML5中可以通过<video>标签在网页中播放影片,且不需要再安装额外的插件,此功能已经带给用户极大的便利.但基本的<video>标签只提供了简单功能的播放器界面,如果想要改变播放器的外观和功能,只能结合<canvas>标签和javascript语句,就能制作出酷炫的播放控制器. {drawImage} 画布canvas如何与视频video标签结合,达到制作各种视频功能的效果呢?其秘诀在于通过画布重新描绘一次视频的内容,将视频的每个画面都转换成画布

  • jQuery多媒体插件jQuery Media Plugin使用详解

    jQuery Media Plugin是一款基于jQuery的网页媒体播放器插件,它支持大部分的网络多媒体播放器和多媒体格式,比如:Flash, Windows Media Player, Real Player, Quicktime, MP3,Silverlight, PDF.它根据当前的脚本配置,自动将a标签替换成div,并生成object, embed甚至是iframe代码,至于生成object还是embed,jQuery Media会根据当前平台自动判别,因此兼容性方面非常出色.下面这段

  • Android中扫描多媒体文件操作详解

    这篇文章从系统源代码分析,讲述如何将程序创建的多媒体文件加入系统的媒体库,如何从媒体库删除,以及大多数程序开发者经常遇到的无法添加到媒体库的问题等.本人将通过对源代码的分析,一一解释这些问题. Android中的多媒体文件扫描机制 Android提供了一个很棒的程序来处理将多媒体文件加入的媒体库中.这个程序就是MediaProvider,现在我们简单看以下这个程序.首先看一下它的Receiver 复制代码 代码如下: <receiver android:name="MediaScanner

  • jQuery Flash/MP3/Video多媒体插件

    1,  jQuery Flash 插件 jQuery Flash 插件 主要提供Flash在WEB页面的嵌入式解决方案. 2,jPlayer jPlayer是一款用于在网页上播放和控制Mp3文件的jQuery插件. 它使用一个在后台的Flash文件来播放Mp3文件,播放器的任何一个地方都可以在XHML/CSS文件里控制. 3,Embed QuickTime Embed QuickTime帮助你直接在网页中插入可播放的QuickTime影片的jQuery插件. 4,jMP3 jMP3提供一种简单的

  • Android多媒体之画画板开发案例分享

    先看看效果: 其实画画板的原理很简单,就是首先记录下按下屏幕的点,然后每移动一下就让这两次移动的点连线,周而复始,图像就由很多条直线构成了. 核心代码 : public class MainActivity extends Activity implements OnClickListener,OnSeekBarChangeListener { private View red_view,green_view,blue_view; //控制画笔颜色的三块区域 private SeekBar se

  • Android实现多媒体录音笔

    记事本涉及到的仅仅是对string 的存储,而且在读取上并不存在什么难点,直接用textview显示便可以了.需要做的主要是使用SQLite对数据进行一个整理. 而录音笔需要考虑的就相对较多了:比如录音时中断,录音时用户点击播放按钮:未录音,用户点击停止按钮;在录音或者播放时关闭activity:listview的item中需要为button设置不同的点击效果等等. 为了便于新手学习,在此还是罗列一下涉及的主要知识点: 1.Baseadapter 2.JAVA的file 3.MediaRecor

  • 基于jQuery的网页影音播放器jPlayer的基本使用教程

    jPlayer简介: 想在网页上播放背景音乐,不想用html标签的方式,因为那样只有音乐全部下载完以后才能播放,还容易出现跨浏览器兼容性的问题,于是选了一款基于jQuery的播放器jPlayer来做. 设置jPlayer的尺寸大小 使用构造函数配置jPlayer({size:Object})设置jPlayer的高宽. 使用构造函数配置jPlayer({sizeFull:Object})设置全屏尺寸. 注意可通过构造函数配置jPlayer({backgroundColor:"#RRGGBB&quo

随机推荐