zoukankan      html  css  js  c++  java
  • 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) 一目了然吧。

  • 相关阅读:
    韩式英语
    Daily dictation 听课笔记
    words with same pronunciation
    you will need to restart eclipse for the changes to take effect. would you like to restart now?
    glottal stop(britain fountain mountain)
    education 的发音
    第一次用Matlab 的lamada语句
    SVN的switch命令
    String的split
    SVN模型仓库中的资源从一个地方移动到另一个地方的办法(很久才解决)
  • 原文地址:https://www.cnblogs.com/jasonkent27/p/4249240.html
Copyright © 2011-2022 走看看