码迷,mamicode.com
首页 > 其他好文 > 详细

绘制基本图形

时间:2016-05-12 14:48:52      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

paint基本方法

  • setStyle

    paint.setStyle(Style.FILL)方法可以给paint设置绘制风格,有FILL,FILL_AND_STROKE,STROKE,这3种绘制风格,每种有所不同。

    技术分享

    上图的3个圆,分别是FILL,FILL_AND_STROKE,STROKE风格绘制的。

  • setShadowLayer

    setShadowLayer (float radius, float dx, float dy, int color)可以设置阴影,参数的意义:

    radius:模糊度
    dx:水平位移
    dy:垂直位移

    看下图:

    技术分享

    上面的radius是20,下面是2.可以看出,radius越大越模糊,越小越清晰,但是如果radius设置为0,则阴影消失不见。

    这里的阴影是绘制在文字下方,文字的阴影支持硬件加速,而其他图形,如圆形等,也可以支持阴影,但是必须使用软件加速。效果如下。

    技术分享

canvas基本方法

  • 直线

    drawLine (float startX, float startY, float stopX, float stopY, Paint paint)可以用来绘制直线。

    startX:开始点X坐标
    startY:开始点Y坐标
    stopX:结束点X坐标
    stopY:结束点Y坐标

    参数和方法比较简单,这里不做演示图。

  • 多条直线

    void drawLines (float[] pts, Paint paint)
    void drawLines (float[] pts, int offset, int count, Paint paint)

    上述两个方法可以绘制多条直线,pts是x,y坐标的数组,值得注意的是如果这里的坐标是(x1,y1,x2,y2,x3,y3,x4,y4)那么绘制的直线将是点(x1,y1),(x2,y2)的连线以及(x3,y3),(x4,y4)的连线,总共两条连线。
    所以绘制的是每两个点的连线,并不是所有点连接

    这里还有offset参数,以及count,意义是偏移多少个点(两个数值),绘制多少个点。\

  • 单个点以及多个点

    void drawPoint (float x, float y, Paint paint)
    该方法绘制一个点。

    void drawPoints (float[] pts, Paint paint)
    void drawPoints (float[] pts, int offset, int count, Paint paint)

    以上方法绘制多个点。使用和上面的绘制多个线条类似。这里不再赘述。

  • 矩形

    void drawRect (float left, float top, float right, float bottom, Paint paint)
    void drawRect (RectF rect, Paint paint)
    void drawRect (Rect r, Paint paint)

    以上三个方法都可以绘制矩形。

  • 圆角矩形

    void drawRoundRect (RectF rect, float rx, float ry, Paint paint)

    其中rx代表圆角椭圆的x半径,ry代表圆角矩形的y半径

  • 圆形

    void drawCircle (float cx, float cy, float radius, Paint paint)
    绘制圆形,cx,cy分别代表圆心的x,y坐标,radius代表了半径。

  • 椭圆

    void drawOval (RectF oval, Paint paint)

    绘制椭圆,这里绘制椭圆没有要圆心和半径等,而是提供一个矩形,绘制出一个内切于该矩形的椭圆。

  • 圆弧

    void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

    方法如上,从绘制椭圆的方法中看出,绘制椭圆要的是一个矩形,而绘制圆弧同样也是要一个矩形。

    startAngle:开始的角度
    sweepAngle:圆弧扫过的角度
    userCenter:是否绘制出圆弧的两条边

    RectF rectF = new RectF(100, 500, 900, 900);
    canvas.drawArc(rectF, 0, -60, false, mPaint);

    -60代表圆弧从逆时针方向扫过。

    技术分享

    以上效果中,paint指定的style是stroke,如果将style指定为fill,那么将会有如下效果。

    技术分享

    代码如下

    mPaint.setStyle(Paint.Style.FILL);
    mPaint.setStrokeWidth(10);

    RectF rectF = new RectF(100, 500, 900, 900);
    canvas.drawArc(rectF, 0, -60, false, mPaint);

    RectF rectF2 = new RectF(100, 800, 900, 1200);
    canvas.drawArc(rectF2, 0, -60, true, mPaint);

使用了userCneter参数以后,画笔Fill状态下,会将弧形到矩形中心连接,并填充。

绘制基本图形

标签:

原文地址:http://blog.csdn.net/cquwentao/article/details/51363346

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!