Android2D理解坑

android中如果要绘制2d图形需要有四个基本组件:
1,Bitmap :相当于画布。基于它之上画图。还可以是:Rect、RectF、text。
2,Canvas:相当于画家。在画布上管理绘制过程,提供绘图方法。
3,Paint:相当于画笔,可以设置画笔的颜色,粗细,类型等。

4,Drawable:包含绘制要素。,如形状,路径,文本,图像等。用于展示图像。

Android手机的屏幕坐标:



Bitmap的常用法:

Bitmap mBitmap = Bitmap.createBitmap(getWidth(),getHeight(), Bitmap.Config.ARGB_8888);//构造方法

mBitmap.recycle();//解除本地对象对该Bitmap对象的引用,清除对像素数据的引用。

sample:

  1. int width = getWidth();  
  2. int height = getHeight();  
  3.   
  4. //画外圆  
  5. paint.setStyle(Paint.Style.STROKE);  
  6. paint.setStrokeWidth(5);  
  7. canvas.drawCircle(width / 2, height / 2, width / 2, paint);  
  8.   
  9. //画刻度  
  10. paint.setStrokeWidth(3);  
  11. for(int i = 0; i < 24; i++){  
  12.     //区分整点与非整点  
  13.     if(i == 0||i == 6||i == 12||i == 18){  
  14.         paint.setStrokeWidth(5);  
  15.         paint.setTextSize(30);  
  16.         canvas.drawLine(width / 2, height / 2 - width / 2, width / 2, height / 2 - width / 2 +60, paint);  
  17.         String degree = String.valueOf(i);  
  18.         canvas.drawText(degree, width / 2 - paint.measureText(degree) / 2, height / 2 - width / 2 +90, paint);  
  19.     }else{  
  20.           
  21.         paint.setTextSize(15);  
  22.         canvas.drawLine(width / 2, height / 2 - width / 2, width / 2, height / 2 - width / 2 +30, paint);  
  23.         String degree = String.valueOf(i);  
  24.         canvas.drawText(degree, width / 2 - paint.measureText(degree) / 2, height / 2 - width / 2 +60, paint);  
  25.           
  26.     }  
  27.       
  28.     //通过旋转画布简化坐标计算  
  29.     canvas.rotate(15, width / 2, height / 2);  
  30. }  
  31.   
  32. //画指针  
  33. paint.setStrokeWidth(20);  
  34. canvas.save();  
  35. canvas.translate(width / 2, height / 2);  
  36. canvas.drawLine(00100100, paint);  
  37. paint.setStrokeWidth(10);  
  38. canvas.drawLine(00100200, paint);  
  39. canvas.restore();


二、Layer图层:  

       在Android中,使用saveLayer()方法创建一个图层,是基于栈的结构进行管理的。调用saveLayer()、saveLayerAlpha()方法将一个图层入栈,使用restore()、restoreToCount()将一个图层出栈。

      代码:

[java] view plain copy
  1. canvas.drawColor(Color.WHITE);  
  2. paint.setColor(Color.BLUE);  
  3.   
  4. canvas.drawCircle(150150100, paint);  
  5.   
  6. canvas.saveLayerAlpha(00400400127, LAYER_TYPE_HARDWARE);  
  7. paint.setColor(Color.RED);  
  8. canvas.drawCircle(200200100, paint);  
  9.   
  10. canvas.restore(); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值