❶ 急求用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);
}
}