音乐播放器毕业设计 - 图文(6)

2019-06-17 10:15

四川科技职业学院毕业设计(论文)

第 23 页

图5.2.3

/**

* 将Image图像转换为Shape图形 *

* @param img * @param isFiltrate

* @return Image图像的Shape图形表示 * @author Hexen

*/

public Shape getImageShape(Image img) {

ArrayList x = new ArrayList();

ArrayList y = new ArrayList(); int width = img.getWidth(null);// 图像宽度 int height = img.getHeight(null);// 图像高度

// 筛选像素

四川科技职业学院毕业设计(论文)

第 24 页

// 首先获取图像所有的像素信息

PixelGrabber pgr = new PixelGrabber(img, 0, 0, -1, -1, true); try {

pgr.grabPixels();

} catch (InterruptedException ex) { ex.getStackTrace(); }

int pixels[] = (int[]) pgr.getPixels();

// 循环像素

for (int i = 0; i < pixels.length; i++) {

// 筛选,将不透明的像素的坐标加入到坐标ArrayList x和y中 int alpha = getAlpha(pixels[i]); if (alpha == 0) { continue; } else {

x.add(i % width > 0 ? i % width - 1 : 0);

y.add(i % width == 0 ? (i == 0 ? 0 : i / width - 1) : i / width); } }

// 建立图像矩阵并初始化(0为透明,1为不透明) int[][] matrix = new int[height][width]; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { matrix[i][j] = 0; } }

四川科技职业学院毕业设计(论文)

第 25 页

// 导入坐标ArrayList中的不透明坐标信息 for (int c = 0; c < x.size(); c++) { matrix[y.get(c)][x.get(c)] = 1; }

/*

* 逐一水平\扫描\图像矩阵的每一行,将不透明的像素生成为Rectangle,再将每一行的Rectangle通过Area类的rec对象进行合并,

* 最后形成一个完整的Shape图形 */

Area rec = new Area();

int temp = 0;

for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (matrix[i][j] == 1) { if (temp == 0) temp = j; else if (j == width) { if (temp == 0) {

Rectangle rectemp = new Rectangle(j, i, 1, 1);

rec.add(new Area(rectemp));

} else {

Rectangle rectemp = new Rectangle(temp, i,

j - temp, 1); rec.add(new Area(rectemp));

temp = 0;

} }

四川科技职业学院毕业设计(论文)

第 26 页

} else {

if (temp != 0) {

Rectangle rectemp = new Rectangle(temp, i, j - temp, 1);

rec.add(new Area(rectemp)); temp = 0; } } } temp = 0; } return rec; } /**

* 获取像素的Alpha值

*

* @param pixel

* @return 像素的Alpha值 */

private int getAlpha(int pixel) { return (pixel >> 24) & 0xff;

}

@Override

public void paint(Graphics g) {

// super.paint(g); //运行此行会导致鼠标进入窗体时窗口闪烁 g.drawImage(img, 0, 0, null); bf.repaint();

四川科技职业学院毕业设计(论文)

第 27 页

kj.repaint(); kt.repaint(); zt.repaint(); fh.repaint(); tj.repaint(); }

// public static void main(String[] args) { // repanl sample = new repanl(); // sample.setVisible(true); // }

5.2.4 播放模式功能实现

/**

* 随机播放 */

public static void randomSong() {

int randNumber = (int) (Math.random() * (defaultSongInfo.size() - 1)); initPlayer(defaultSongInfo.elementAt(randNumber));

start();

defaultSongList.setSelectedIndex(randNumber); }

5.2.5 歌词背景功能实现

歌词背景菜单包含风车,倾听,蒲公英,许愿,无背景,5个子菜单。如图5.2.5:


音乐播放器毕业设计 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《手工基础》课程教学大纲

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: