Canvas用法

做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。
不错,Android上面也类似,你可以从一个Bitmap得到它的Canvas,进行绘制,也可以自定义一个View,
用它的Canvas。不同的时,Android里没有Graphics,而用Paint代之,当然用法也稍有不同。以下是自定义View的一段代码:
@Override
public void onDraw(Canvas canvas) {
// 首先定义一个paint
Paint paint = new Paint();

// 绘制矩形区域-实心矩形
// 设置颜色
paint.setColor(Color.WHITE);
// 设置样式-填充
paint.setStyle(Style.FILL);
// 绘制一个矩形
canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);

// 绘空心矩形
// 设置颜色
paint.setColor(Color.RED);
// 设置样式-空心矩形
paint.setStyle(Style.STROKE);
// 绘制一个矩形
canvas.drawRect(new Rect(10, 10, 50, 20), paint);

// 绘文字
// 设置颜色
paint.setColor(Color.GREEN);
// 绘文字
canvas.drawText(str, 30, 30, paint);

// 绘图
// 从资源文件中生成位图
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
// 绘图
canvas.drawBitmap(bitmap, 10, 10, paint);
}


以上需要注意的有三点:
1、Android中的Rect和java中的可能稍有区别,前两个参数是左上角的坐标,后两个参数是右下角的坐标(不是宽度和高度);
2、Style.STROKE和Style.FILL外边的像素数是有区别的,这点和java里一样;
3、绘文字时,设置的坐标点为(30,30),但绘出来后你会发现,文字的左上角坐标要比你设置的偏上,不知道是android设置的bug,还是我们有理解到坐标点的意义。

更多相关文章

  1. 在Android当中常用的控件的详解和分析
  2. Android(安卓)关于android:foreground设置无效的问题
  3. gravity与layout_gravity的区别
  4. Android(安卓)沉浸式状态栏 头部可拉伸带有一键置顶功能
  5. Android中原生Progress几种常用的风格
  6. 认识Android中的双向绑定
  7. Android代码里或者XML设置android:clickable="false"无效。点击
  8. 【Android】设置tabhost位于底部的三种方法
  9. View 的绘制流程

随机推荐

  1. 命令行创建虚拟环境
  2. 【Android 电量优化】JobScheduler 相关
  3. Android设置Selector不同状态下颜色及图
  4. Android Retrofit 2.0(二)使用教程OkHttp3
  5. android Java BASE64编码和解码二:图片的
  6. BroadcastReceiver实现android来去电录音
  7. [置顶] Android(安卓)AsyncTask源码解析
  8. Android(安卓)UI开发详解之Fragment
  9. 通过JNI实现c/c++和Android的java层函数
  10. Android屏幕禁止休眠的方法