现在的位置: 首页 > 综合 > 正文

android 剪切图片 显示图片的一部分

2013年09月17日 ⁄ 综合 ⁄ 共 2661字 ⁄ 字号 评论关闭

方法一:

 

Canvas类用来实现绘制.通过组合使用Canvas类的成员函数可以实现随心随欲地绘制图片的任何部分.

Canvas.clipRect:设置显示区域 
Canvas.drawBitmap:绘制

例子:
Bitmap b=BitmapFactory.decodeStream("图片编号", null);//读取图片

...

Canvas c = null;//实例Canvas

c.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, 001212);   
  3.          Bitmap one = Bitmap.createBitmap(resource, 1201212);   
  4.          Bitmap two = Bitmap.createBitmap(resource, 2401212);   
  5.          Bitmap three = Bitmap.createBitmap(resource, 3601212);   
  6.          Bitmap four = Bitmap.createBitmap(resource, 4801212);   
  7.          Bitmap five = Bitmap.createBitmap(resource, 6001212);   
  8.          Bitmap six = Bitmap.createBitmap(resource, 7201212);   
  9.          Bitmap seven = Bitmap.createBitmap(resource, 8401212);   
  10.          Bitmap eight = Bitmap.createBitmap(resource, 9601212);   
  11.          Bitmap nine = Bitmap.createBitmap(resource, 10801212);  


    其中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 * 120, mPaint);   
  5.              } else if(nums[i] == '1') {   
  6.                  canvas.drawBitmap(one, i * 120, mPaint);   
  7.              } else if(nums[i] == '2') {   
  8.                  canvas.drawBitmap(two, i * 120, mPaint);   
  9.              } else if(nums[i] == '3') {   
  10.                  canvas.drawBitmap(three, i * 120, mPaint);   
  11.              } else if(nums[i] == '4') {   
  12.                  canvas.drawBitmap(four, i * 120, mPaint);   
  13.              } else if(nums[i] == '5') {   
  14.                  canvas.drawBitmap(five, i * 120, mPaint);   
  15.              } else if(nums[i] == '6') {   
  16.                  canvas.drawBitmap(six, i * 120, mPaint);   
  17.              } else if(nums[i] == '7') {   
  18.                  canvas.drawBitmap(seven, i * 120, mPaint);   
  19.              } else if(nums[i] == '8') {   
  20.                  canvas.drawBitmap(eight, i * 120, mPaint);   
  21.              } else if(nums[i] == '9') {   
  22.                  canvas.drawBitmap(nine, i * 120, mPaint);   
  23.              }   
  24.          }  


    其中canvas为画布,drawBitmap方法中的四个参数的意义分别为:需要绘制的图片资源、在画布上绘制的起始点的X坐标、Y坐标、画笔。其中画笔在此处可以不进行任何设置,只需new一个出来即可,Paint mPaint = new Paint();

 

成功, 不知道为什么????????????????????????????

抱歉!评论已关闭.