騎豬闖天下

          J2ME隨筆,記錄成長的腳步

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          [J2ME-原創] 用矩陣上的變量,表示圖片的位置,畫圖

          本處提供兩個實例,用矩陣變量畫圖。


          實例一:
          用矩陣上的變量,表示小圖片的位置編號,
          然后把圖片畫上去,步驟如下:

          1,把提供的原圖片編號,用一維圖片數組編號,如
               一個4*7的小圖片組合,用pic_Yuantu [i]來給這28個小圖片編號,編號方法:
                   //這是一種不用setClip方法的編號
              Image pic_Yuantu[] = new Image[28];
                  
          try 
          {
                      Image img 
          = Image.createImage("/res/t_pic.png");            //加載連連圖片看

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

                          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);    //畫圖片            

                      }

                  }
           catch (Exception ee) {
                      ee.printStackTrace();
                  }

          2,畫一個矩陣,并且給矩陣的每一個位置編號, 二維的數組有個好處,就是自己有個序列號 matrix [][] 對應位置, 可以用這個序列號來記錄每個位置的值,如:
               畫一個3*5的二維數組矩陣, 并給每個數組位置編號:

              A>. 畫一個數組:  private int matrix [3][5];
              B
          >
          . 給數組編號:  b, b是個一維數組,
            
                  
          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);          //
          按照雙號編號,即0,0,1,1
                      
          //b = ((x * HCount + y) / 2) % 28;      //剛才有28個小圖片

                          }

                          matrix[x][y] 
          = b;              //按照單元格圖片索引生成的有規律的矩陣  
                      }

                  }


              C
          >. 即二維數組矩陣的編號matrix[x][y]位置上對應一個具體的值,這個值用個一維數組b存儲.


          3,把小圖片畫到二維數組矩陣對應的位置上,這是連接二者的關鍵,即:把原圖片數組pic_Yuantu [i]上的編號與二維數組矩陣位置上的值 b 對應起來,就可以用drawImageb把pic_Yuantu[i]畫到位置 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);    //獲取矩陣內容,調用一個方法,返回的結果是: 
                                                              
          //      return matrix[x ][y ];
                                                              
          //也就是: b = matrix[x][y];
                              
                          
          if (b >= 0 && b < seedCount)        //繪制圖片,并繪制外邊框
                          {        
                              g.setColor(outerColor);            
          //設置外邊框顏色
                              g.drawImage( pic_Yuantu [b],  ( x*HSize + xMargin + 1), 
                                      ( y
          *VSize + yMargin + 1), 0);                //繪制圖片
                              g.drawRect(x * HSize + xMargin, 
                                      y 
          * VSize + yMargin, HSize, VSize);            //繪制邊框
                          }
                                         
                      }

                  }

          當然具體操作起來,還要變換矩陣,打亂排列位置,具體參照排列矩陣.。



          實例二:

          1.  畫布上3*3的數組, 數組序列號與數組行列位置的關系是
                   image [i][j] = i*3+j;

          2.  4*7的圖片, 如果是一維索引號的話,即: "image i; " 從0到27編號,而不是上面image[i][j] 編號, 那么索引號i 與行列的關系是:
                   行號 H = (i-1)%7, 是取余, 那么具體到圖片i的x坐標是: [((i-1)%7 ) * 每個圖片的寬];
                   列號 L = (i-1)/7, 是取除, 那么具體到圖片i的y坐標是: [((i-1)/7 ) * 每個圖片的高];

          3.  生成有序矩陣: b = ((x * HCount + y) / 2) % SeedCount;

                  for (int x = 0; x < HCount; x++){
                      
          for (int y = 0; y < Vcount; y++)
                      
          {
                          j 
          = 1-j;            //防止生成單個圖片的。
                          if (j == 1)
                          
          {
                              b 
          = ((x * HCount + y) / 2% SeedCount;
                          }

                          matrix[x][y] 
          = b;    //按照單元格圖片索引生成的有規律的矩陣  
                      }

                  }


          HCount:列數,即新建放圖片的數組總列數
          SeedCount:原圖片總共含有的圖片數。

          循環之后,即:給新建HCount列,Vcount行的數組編上號,
          A,由于圖片必須成對出現,所以要除以2;
          B,由于怕源小圖片乘以2<新建數組的總方格,所以對SeedCount取余;以便把多出的方格用重復的圖片顯示
          C,排列后的位置為:
          ------------
          0 1 3 4
          0 2 3 5
          1 2 4 5
          ------------

          D,編號即為:matrix[x][y] = b;

           

          <騎豬闖天下>

          posted on 2008-08-29 22:03 騎豬闖天下 閱讀(1315) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 玉溪市| 原平市| 西安市| 白沙| 墨竹工卡县| 吴忠市| 贵港市| 申扎县| 宝坻区| 庆云县| 色达县| 台南市| 澎湖县| 静安区| 绥阳县| 万盛区| 蒙山县| 吴川市| 闸北区| 墨江| 新津县| 博白县| 五原县| 宝鸡市| 登封市| 河北省| 天柱县| 梅河口市| 哈巴河县| 大足县| 大港区| 湖南省| 上饶县| 洛川县| 南宫市| 广昌县| 康定县| 筠连县| 湟中县| 喀喇沁旗| 长汀县|