❶ 急求用java编写的图形化界面拼图小游戏代码!
个人见解,总体需要两个二维数组(一个存储正确图片排列 Array1 String[][],一个随机生成图片排列Array2 String[][]),一个一维数组来存储图片的名称Array3 String[],。
(1)如何实现图片移动
使用带图片的按钮(button =new button(getImage(Array[2][4]))),然后通过单击事件来更改按钮的图片来源。 把被点击的按钮的图片路径更新到空白按钮,并且把被点击的按钮图片更新的成空白。其实就是变换两个的二维数组成员的值。更新枣信Array2中的值,然后重绘按钮
如 Array[2][3]=“3.image”
Array[2][4]=“”
图片3.image右移
Array[2][3]=“”
Array[2][4]=“3.image”
(袜岩带2)如何判断被单击的网格与空白的网格是否相邻
后台使用一个二维数组Array2来做映射。通过二维数组的下标来判断,如Array[2][3]可以知道Array[2][4]是它右边的那个。
(3)如何实现图片的随机摆放
比如告芦有9个图片,你可以命名1-9,然后初始化一个长度为9的一维String 数组Array3来存储图片的名称,
使用随机函数给二维数组Array2赋值,如Array2[2][3]=Array3[random()],这里要判断这个图片是否已被使用过,可以通过遍历Array2来确定当前Array3这个值是否已经在Array2中了
最后通过Array1 和Array2来比较,用户的拼图是否正确。
语言组织能力有限。讲不太清楚。
❷ 我在用java进行图片压缩时,遇到130MB 的图片是报错 , 像十几MB时不会出错,
Runtime.getRuntime().maxMemory(),查看一下jvm最大内存,若小了,可通过java参数来设置,如 java -Xmx1024m Test,将最大堆空间设为1024m
❸ JAVA PNG图片分割,无背景。
怎么会无法呢。java支持图片格式中最好的就是png,别的图片可以不支持山竖悔,png是默认支持的。用ARGB色彩模型直接对png操作即可,
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjavax.imageio.ImageIO;
publicclassTest{
staticpublicvoidmain(String参数[]){
try{
BufferedImageimg=ImageIO.read(newFile("纤厅test.png"));
inthalf_w=img.getWidth()/2;
intrgb[]=newint[half_w*img.getHeight()];
img.getRGB(0,0,half_w,img.getHeight(),rgb,0,half_w);
BufferedImageimg_half=newBufferedImage(half_w,img.getHeight(),BufferedImage.TYPE_INT_ARGB);
img_half.setRGB(0,0,half_w,img.getHeight(),rgb,0,half_w);
//保存到新文件half.png里面
ImageIO.write(img_half,"PNG"逗正,newFile("half.png"));
}catch(IOExceptione){
e.printStackTrace();
}
}
}
======
得到half.png签名图的左半边,保留了透明的背景。
这已经只有5-6行,抛砖引玉,用raster可能代码更简..
❹ 怎么用java切割出不规则图形的图片
//用基本图形拼呀
import java.awt.Graphics;
import javax.swing.*;
public class IrregulaShape extends JPanel{
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawRect(100, 50,100, 100);
g.drawArc(100, 25, 50, 50, 0, 180);
//g.fillRect(100, 50, 100, 100);
//g.fillOval(100, 25, 50, 50);
}
public static void main(String[] args) {
JFrame jFrame = new JFrame("不规则的!");
IrregulaShape j = new IrregulaShape();
jFrame.add(j);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(500,500);
jFrame.setLocationRelativeTo(null);
jFrame.setVisible(true);
}
}