方法一:
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代碼
- Bitmap resource = BitmapFactory.decodeResource(this.getResources(), R.drawable.num);
- Bitmap zero = Bitmap.createBitmap(resource, 0, 0, 12, 12);
- Bitmap one = Bitmap.createBitmap(resource, 12, 0, 12, 12);
- Bitmap two = Bitmap.createBitmap(resource, 24, 0, 12, 12);
- Bitmap three = Bitmap.createBitmap(resource, 36, 0, 12, 12);
- Bitmap four = Bitmap.createBitmap(resource, 48, 0, 12, 12);
- Bitmap five = Bitmap.createBitmap(resource, 60, 0, 12, 12);
- Bitmap six = Bitmap.createBitmap(resource, 72, 0, 12, 12);
- Bitmap seven = Bitmap.createBitmap(resource, 84, 0, 12, 12);
- Bitmap eight = Bitmap.createBitmap(resource, 96, 0, 12, 12);
- Bitmap nine = Bitmap.createBitmap(resource, 108, 0, 12, 12);
其中R.drawable.num為數字圖片,每個數字佔據的像素為12*12,Bitmap.createBitmap方法中的五個參數意義分別為:需要切割的圖片資源、切割起始點的X座標、切割起始點的Y座標、切割多寬、切割多高。
切割下來之後就非常簡單的就可以顯示各種數字了,例如:用String類型的number表示需要顯示的數字,則
Java代碼
- char nums[] = number.toCharArray();
- for(int i = 0; i < nums.length; i ++) {
- if(nums[i] == '0') {
- canvas.drawBitmap(zero, i * 12, 0, mPaint);
- } else if(nums[i] == '1') {
- canvas.drawBitmap(one, i * 12, 0, mPaint);
- } else if(nums[i] == '2') {
- canvas.drawBitmap(two, i * 12, 0, mPaint);
- } else if(nums[i] == '3') {
- canvas.drawBitmap(three, i * 12, 0, mPaint);
- } else if(nums[i] == '4') {
- canvas.drawBitmap(four, i * 12, 0, mPaint);
- } else if(nums[i] == '5') {
- canvas.drawBitmap(five, i * 12, 0, mPaint);
- } else if(nums[i] == '6') {
- canvas.drawBitmap(six, i * 12, 0, mPaint);
- } else if(nums[i] == '7') {
- canvas.drawBitmap(seven, i * 12, 0, mPaint);
- } else if(nums[i] == '8') {
- canvas.drawBitmap(eight, i * 12, 0, mPaint);
- } else if(nums[i] == '9') {
- canvas.drawBitmap(nine, i * 12, 0, mPaint);
- }
- }
其中canvas為畫布,drawBitmap方法中的四個參數的意義分別為:需要繪製的圖片資源、在畫布上繪製的起始點的X座標、Y座標、畫筆。其中畫筆在此處可以不進行任何設定,只需new一個出來即可,Paint mPaint = new Paint();
成功, 不知道為什嗎????????????????????????????