本處提供兩個(gè)實(shí)例,用矩陣變量畫(huà)圖。
實(shí)例一:
用矩陣上的變量,表示小圖片的位置編號(hào),然后把圖片畫(huà)上去,步驟如下:
1,把提供的原圖片編號(hào),用一維圖片數(shù)組編號(hào),如
一個(gè)4*7的小圖片組合,用pic_Yuantu [i]來(lái)給這28個(gè)小圖片編號(hào),編號(hào)方法:
//這是一種不用setClip方法的編號(hào)
Image pic_Yuantu[] = new Image[28];

try
{
Image img = Image.createImage("/res/t_pic.png"); //加載連連圖片看

for (int i = 1; i <= 28; i++)
{ //圖片數(shù)量

pic_Yuantu[i - 1] = Image.createImage(HSize, VSize); //圖片大小
Graphics newg = pic_Yuantu[i - 1].getGraphics();

newg.drawImage(img, ((1-i)%7 )* HSize, ((1-i)/7 )* VSize, 0); //畫(huà)圖片
}

} catch (Exception ee)
{
ee.printStackTrace();
}
2,畫(huà)一個(gè)矩陣,并且給矩陣的每一個(gè)位置編號(hào), 二維的數(shù)組有個(gè)好處,就是自己有個(gè)序列號(hào) matrix [][] 對(duì)應(yīng)位置, 可以用這個(gè)序列號(hào)來(lái)記錄每個(gè)位置的值,如:
畫(huà)一個(gè)3*5的二維數(shù)組矩陣, 并給每個(gè)數(shù)組位置編號(hào):
A>. 畫(huà)一個(gè)數(shù)組: private int matrix [3][5];
B>. 給數(shù)組編號(hào): b, b是個(gè)一維數(shù)組,
int j = 0;
int b = 0;

for (int x=0; x<3; x++)
{
for (int y=0; y<5; y++)

{
j = 1-j;
if (j == 1)

{
b = ((x * HCount + y) / 2); //按照雙號(hào)編號(hào),即0,0,1,1
//b = ((x * HCount + y) / 2) % 28; //剛才有28個(gè)小圖片
}
matrix[x][y] = b; //按照單元格圖片索引生成的有規(guī)律的矩陣
}
}

C>. 即二維數(shù)組矩陣的編號(hào)matrix[x][y]位置上對(duì)應(yīng)一個(gè)具體的值,這個(gè)值用個(gè)一維數(shù)組b存儲(chǔ).
3,把小圖片畫(huà)到二維數(shù)組矩陣對(duì)應(yīng)的位置上,這是連接二者的關(guān)鍵,即:把原圖片數(shù)組pic_Yuantu [i]上的編號(hào)與二維數(shù)組矩陣位置上的值 b 對(duì)應(yīng)起來(lái),就可以用drawImageb把pic_Yuantu[i]畫(huà)到位置 matrix[x][y]=b 上,方法如下:
for (int x = 0; x < 3; x++) //遍歷橫向

{

for (int y = 0; y < 5; y++)
{ //遍歷縱向
int b = matrix.getAt(x + 1, y + 1); //獲取矩陣內(nèi)容,調(diào)用一個(gè)方法,返回的結(jié)果是:
// return matrix[x ][y ];
//也就是: b = matrix[x][y];
if (b >= 0 && b < seedCount) //繪制圖片,并繪制外邊框

{
g.setColor(outerColor); //設(shè)置外邊框顏色
g.drawImage( pic_Yuantu [b], ( x*HSize + xMargin + 1),
( y*VSize + yMargin + 1), 0); //繪制圖片
g.drawRect(x * HSize + xMargin,
y * VSize + yMargin, HSize, VSize); //繪制邊框
}
}
}
當(dāng)然具體操作起來(lái),還要變換矩陣,打亂排列位置,具體參照排列矩陣.。
實(shí)例二:
1. 畫(huà)布上3*3的數(shù)組, 數(shù)組序列號(hào)與數(shù)組行列位置的關(guān)系是
image [i][j] = i*3+j;
2. 4*7的圖片, 如果是一維索引號(hào)的話,即: "image i; " 從0到27編號(hào),而不是上面image[i][j] 編號(hào), 那么索引號(hào)i 與行列的關(guān)系是:
行號(hào) H = (i-1)%7, 是取余, 那么具體到圖片i的x坐標(biāo)是: [((i-1)%7 ) * 每個(gè)圖片的寬];
列號(hào) L = (i-1)/7, 是取除, 那么具體到圖片i的y坐標(biāo)是: [((i-1)/7 ) * 每個(gè)圖片的高];
3. 生成有序矩陣: b = ((x * HCount + y) / 2) % SeedCount;

for (int x = 0; x < HCount; x++)
{
for (int y = 0; y < Vcount; y++)

{
j = 1-j; //防止生成單個(gè)圖片的。
if (j == 1)

{
b = ((x * HCount + y) / 2) % SeedCount;
}
matrix[x][y] = b; //按照單元格圖片索引生成的有規(guī)律的矩陣
}
}
HCount:列數(shù),即新建放圖片的數(shù)組總列數(shù)
SeedCount:原圖片總共含有的圖片數(shù)。
循環(huán)之后,即:給新建HCount列,Vcount行的數(shù)組編上號(hào),
A,由于圖片必須成對(duì)出現(xiàn),所以要除以2;
B,由于怕源小圖片乘以2<新建數(shù)組的總方格,所以對(duì)SeedCount取余;以便把多出的方格用重復(fù)的圖片顯示
C,排列后的位置為:
------------
0 1 3 4
0 2 3 5
1 2 4 5
------------
D,編號(hào)即為:matrix[x][y] = b;
<騎豬闖天下>