方法一:

 

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, 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();

 

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

更多相关文章

  1. android 加载图片方式
  2. Android中的drawable像素密度适配详解
  3. Android(安卓)图片Bitmap的剪切的示例代码
  4. Android(安卓)GridView 异步加载图片
  5. ImageLoader源码解析
  6. Android(安卓)Glide图片加载框架图片变色变绿解决方法
  7. Android(安卓)手机上传图片至javaweb服务器(servlet)
  8. Android之——图片的内存优化
  9. Androidstudio添加背景图片

随机推荐

  1. Android如何自定义视图属性总结
  2. android 异常错误积累
  3. Problems of Android NDK
  4. Android APP 自定义水印(kotlin)
  5. Android 删除aar包中的jar包解决Duplicat
  6. Android下Multiple markers at this line
  7. android studio 配置签名
  8. android判断指定时间是否是当前时间
  9. 从Java类加载初始化到Android热修复
  10. android sqlite数据库的增删改查