android 剪下圖片 顯示圖片的一部分

來源:互聯網
上載者:User

方法一:

 

Canvas類用來實現繪製.通過組合使用Canvas類的成員函數可以實現隨心隨欲地繪製圖片的任何部分.Canvas.clipRect:設定顯示地區 Canvas.drawBitmap:繪製例子:Bitmap b=BitmapFactory.decodeStream("圖片編號", null);//讀取圖片...Canvas c = null;//執行個體Canvasc.save();//記錄原來的canvas狀態c.clipRect(100,100,200,300);//顯示從(100,100)到(200,300)的地區(單位:象素)c.drawBitmap(b,10,0,null); //將閹割過的圖片畫到(10,0)位置c.restore();//恢複canvas狀態

未驗證成功

方法二:

在自己自訂的一個組件中由於需要用圖片顯示數字編號,而當前圖片就只有一張,上面有0-9是個數字,於是不得不考慮將其中一個個的數字切割下來,需要顯示什麼數字,只需要組合一下就好了。 
    下面是程式的關鍵代碼: 
    在MyView(繼承於View)類中的重寫的onDraw(Canvas canvas)方法中,有如下程式碼片段:

Java代碼 
  1. Bitmap resource = BitmapFactory.decodeResource(this.getResources(), R.drawable.num);   
  2.          Bitmap zero = Bitmap.createBitmap(resource, 0, 0, 12, 12);   
  3.          Bitmap one = Bitmap.createBitmap(resource, 12, 0, 12, 12);   
  4.          Bitmap two = Bitmap.createBitmap(resource, 24, 0, 12, 12);   
  5.          Bitmap three = Bitmap.createBitmap(resource, 36, 0, 12, 12);   
  6.          Bitmap four = Bitmap.createBitmap(resource, 48, 0, 12, 12);   
  7.          Bitmap five = Bitmap.createBitmap(resource, 60, 0, 12, 12);   
  8.          Bitmap six = Bitmap.createBitmap(resource, 72, 0, 12, 12);   
  9.          Bitmap seven = Bitmap.createBitmap(resource, 84, 0, 12, 12);   
  10.          Bitmap eight = Bitmap.createBitmap(resource, 96, 0, 12, 12);   
  11.          Bitmap nine = Bitmap.createBitmap(resource, 108, 0, 12, 12);  


    其中R.drawable.num為數字圖片,每個數字佔據的像素為12*12,Bitmap.createBitmap方法中的五個參數意義分別為:需要切割的圖片資源、切割起始點的X座標、切割起始點的Y座標、切割多寬、切割多高。 
    切割下來之後就非常簡單的就可以顯示各種數字了,例如:用String類型的number表示需要顯示的數字,則

Java代碼 
  1. char nums[] = number.toCharArray();   
  2.         for(int i = 0; i < nums.length; i ++) {   
  3.             if(nums[i] == '0') {   
  4.                  canvas.drawBitmap(zero, i * 12, 0, mPaint);   
  5.              } else if(nums[i] == '1') {   
  6.                  canvas.drawBitmap(one, i * 12, 0, mPaint);   
  7.              } else if(nums[i] == '2') {   
  8.                  canvas.drawBitmap(two, i * 12, 0, mPaint);   
  9.              } else if(nums[i] == '3') {   
  10.                  canvas.drawBitmap(three, i * 12, 0, mPaint);   
  11.              } else if(nums[i] == '4') {   
  12.                  canvas.drawBitmap(four, i * 12, 0, mPaint);   
  13.              } else if(nums[i] == '5') {   
  14.                  canvas.drawBitmap(five, i * 12, 0, mPaint);   
  15.              } else if(nums[i] == '6') {   
  16.                  canvas.drawBitmap(six, i * 12, 0, mPaint);   
  17.              } else if(nums[i] == '7') {   
  18.                  canvas.drawBitmap(seven, i * 12, 0, mPaint);   
  19.              } else if(nums[i] == '8') {   
  20.                  canvas.drawBitmap(eight, i * 12, 0, mPaint);   
  21.              } else if(nums[i] == '9') {   
  22.                  canvas.drawBitmap(nine, i * 12, 0, mPaint);   
  23.              }   
  24.          }  


    其中canvas為畫布,drawBitmap方法中的四個參數的意義分別為:需要繪製的圖片資源、在畫布上繪製的起始點的X座標、Y座標、畫筆。其中畫筆在此處可以不進行任何設定,只需new一個出來即可,Paint mPaint = new Paint();

 

成功, 不知道為什嗎????????????????????????????

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.