Android中有一个Canvas类,Canvas类就是表示一块画布,你可以在上面画你想画的东西。当然,你还可以设置画布的属性,如画布的颜色/尺寸等。Canvas提供了如下一些方法:

Canvas():创建一个空的画布,可以使用setBitmap()方法来设置绘制的具体画布;

Canvas(Bitmapbitmap):以bitmap对象创建一个画布,则将内容都绘制在bitmap上,bitmap不得为null;

Canvas(GLgl):在绘制3D效果时使用,与OpenGL有关;

drawColor:设置画布的背景色;

setBitmap:设置具体的画布;

clipRect:设置显示区域,即设置裁剪区;

isOpaque:检测是否支持透明;

rotate:旋转画布;
 
   canvas.drawRect(RectF,Paint)方法用于画矩形,第一个参数为图形显示区域,第二个参数为画笔,设置好图形显示区域Rect和画笔Paint后,即可画图;

canvas.drawRoundRect(RectF, float, float, Paint)方法用于画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。

canvas.drawLine(startX, startY, stopX, stopY,paint):前四个参数的类型均为float,最后一个参数类型为Paint。表示用画笔paint从点(startX,startY)到点(stopX,stopY)画一条直线;

canvas.drawArc(oval,startAngle, sweepAngle,
useCenter,paint):第一个参数oval为RectF类型,即圆弧显示区域,startAngle和sweepAngle均为float类型,分别表示圆弧起始角度和圆弧度数,3点钟方向为0度,useCenter设置是否显示圆心,boolean类型,paint为画笔;

canvas.drawCircle(float,float, float,Paint)方法用于画圆,前两个参数代表圆心坐标,第三个参数为圆半径,第四个参数是画笔;

清楚这些函数的用法之后,我们是否就噼里啪啦地敲代码了呢?别急,我们来搞个设计。既然这些函数都是用来画图的,也就是说它们有共性——画。所有我们应该设计一个接口interface,对于这次任务,只需要一个成员方法就足够了。对于每一个图形,是只用一个方法画,还是将画图封装成类呢?我建议是封装成类。因为说不定你明天就会嫌弃它不会动,想它动起来,或者你过两天又希望在图的每个部位加点什么。所以我将每一个图形封装成类,都实现一个名叫drawGraphics的接口。最后,要记得给UI创建一个线程哦。

不过要注意的是这里的Rect跟Java的Rectangle是不一样的,原来这厮跟MFC中的RECT结构才是一家人。
    Rect(intleft,int top,int right,int bottom)
    left
             矩形左上角X坐标值
    top
            矩形左上角Y坐标值
    right
            矩形右下角X坐标值
    bottom
            矩形右下角Y坐标值

下面借用一张图说明忘了哪个博客找来的了,如Rect(150,75, 260, 120) 一目了然吧。

最新文章

  1. javaWeb开发小工具--MyCommonUtils
  2. 【堆】【kd-tree】bzoj2626 JZPFAR
  3. HDU 4857 Couple doubi(找循环节)
  4. Javascript 笔记与总结(2-12)联动菜单
  5. C++Builder加载Png图片
  6. Shuffle相关分析
  7. hadoop Safe mode is ON 的解决办法
  8. Ubuntu下安装和配置Apache2
  9. Easy UI下拉列表默认选中(多行)与为文本框赋值
  10. [ExtJS5学习笔记]第二十九节 sencha ext js 5.1.0中动态更换皮肤主题
  11. libevent之event_base
  12. 如何调用别人提供的webservice接口
  13. controller向layout传值
  14. 使用kindeditor来替换ecshop的fckeditor编辑器,让ecshop可以批量上传图片
  15. react 生命周期函数
  16. CNN网络架构演进
  17. linux使用curl上传文件并且同时携带其它传递参数
  18. Codeforces 578.C Weakness and Poorness
  19. debug教程
  20. JavaScript基础部分经典案例

热门文章

  1. poj 1328 安雷达问题 贪心算法
  2. Linux学习-分析登录档
  3. Linux学习-循环执行的例行性工作排程
  4. PHP-redis命令之 列表(lists)
  5. 引用&符号详解
  6. PHP函数参数传递(相对于C++的值传递和引用传递)
  7. webdriver高级应用- 浏览器中新开标签页(Tab)
  8. loadrunner参数化数据分配方法
  9. ranorex前一步的操作结果后一步如何调用
  10. MacOS常用软件推荐