• Android 中的Canvas画图


    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) 一目了然吧。

  • 相关阅读:
    C#与JS实现 获取指定字节长度 中英文混合字符串 的方法
    CKFinder_AspDotNet_2.4 破解方法 去版权
    MVC3中如何输出富文本
    CKEditor与CKFinder整合 MVC3
    vue项目多页配置
    设备宽度
    h5前端项目常见问题汇总
    react分享
    javascript-复制
    vue开发笔记
  • 原文地址:https://www.cnblogs.com/jasonkent27/p/4249240.html
Copyright © 2020-2023  润新知