Android绘图三大基本类

作者: lavor | 来源:发表于2016-07-06 19:49 被阅读2509次

    Android绘图三大基本类


    Android绘图的三个基本类:

    • Bitmap:相当于我们绘制出来的图像
    • Paint:相当于我们绘图所用的画笔
    • Canvas:相当于我们绘图所用的画布

    1. Bitmap


    玩转Android Bitmap

    2. Paint


    Paint拥有绘制几何,文本,位图的风格与颜色信息。

    1. 新建一个Paint对象


    Paint有三个构造方法,我们可以通过这三个构造方法创建Paint对象:

    • Paint():用默认设置创建一个Paint对象
    • Paint(int flags):用特殊标记创建一个Paint对象
    • Paint(Paint paint):用指定Paint对象的参数初始化一个新的Paint对象

    2. 常用方法


    • setARGB(int a, int r, int g, int b):设置画笔颜色
    • setAntiAlias(boolean aa):设置是否抗锯齿
    • setColor(int color):设置画笔颜色
    • setAlpha(int a):设置画笔透明度
    • setTextSize(float textSize):设置字体大小
    • setUnderlineText(boolean underlineText):设置文本带有下划线效果
    • setStrikeThruText(boolean strikeThruText):设置文本带删除线效果
    • setTextSkewX(float skewX):设置文本倾斜度
    • setTextScaleX(float scaleX):设置文本缩放大小
    • setTextAlign(Paint.Align align):设置文本对齐方式
    • setTypeface(Typeface typeface):设置字体
    • setStyle(Paint.Style style):设置画笔样式,画笔样式有三种
      • Paint.Style.FILL:默认值,用这种风格绘制的几何图与文本将被填充,它画出来的是实心图
      • Paint.Style.STROKE:用这种风格绘制的几何图与文本将被画出外边框,它画出来的是空心图
      • Paint.Style.FILL_AND_STROKE:用这种风格绘制的几何图与文本将被填充并被画出外边框,从表面看它画出来的也是实心图,不过比一般画出来的实心图多了一层外边框
    • setStrokeWidth(float width):设置画笔外边框的宽度,可以想象成画笔“画出线条的宽度”
    • setXfermode(Xfermode xfermode):设置图像重叠时的处理方式
    • setShader(Shader shader):设置着色器
    • setPathEffect(PathEffect effect):设置或者清除路径效果

    3. Canvas


    Canvas拥有“绘制”调用,可以调用方法进行图像绘制。
    画图时需要四个基本元素:

    • 拥有像素的Bitmap
    • 可以进行绘制调用的Canvas
    • 图元(比如:Rect, Path, text, Bitmap)
    • 描述风格与颜色的Paint

    1. 新建一个Canvas对象


    Canvas有两个构造方法,我们可以通过这两个构造方法创建Canvas对象:

    • Canvas():创建一个空的Canvas对象
    • Canvas(Bitmap bitmap):用指定的位图构造一个Canvas对象

    2. 常用方法


    • drawARGB():用指定ARGB颜色填充画布上面的位图
    • drawRGB():用指定RGB颜色填充画布上面的位图
    • drawColor():用指定颜色填充画布上面的位图
    • drawArc():画圆弧
    • drawBitmap():画位图
    • drawCircle():画圆
    • drawLine():画直线
    • drawLines():画折线
    • drawOval():画椭圆
    • drawRect():画矩形
    • drawRoundRect():画圆角矩形
    • drawPoint():画点
    • drawPoints():画一组点
    • drawPath():画路径
    • drawText():画文本

    相关文章

      网友评论

      • 工程师milter:作者对概念的讲解有误。Canvas不是画布,它实际上相当于画家。建议看看我这篇文章,分分钟让你搞清楚这些概念。http://www.jianshu.com/p/7897d97d17cc
        lavor:@milter 如果非说有画家的话,画家就是开发者,Canvas有一系列的draw方法为什么你就要理解成Canvas画东西,而不理解成在Canvas上面画东西啊,不要太生硬地理解一些方法的含义。
        工程师milter:@milter 这是很多技术文章人云亦云,以讹传讹造成的。难道你不觉得画布自己能画这个,能画那个的很奇怪吗。实际上,一个View在draw方法中获得的canvas是由View所在Window的surface生成的,以便让view在surface上绘制自己。将surface比喻成画布才最合适,canvas可以比喻成画家或者画笔更合适。
        lavor:@milter 第一次听说Canvas相当于画家,也是醉了啊,难道是因为Canvas有一系列的draw方法,就认为它在画东西,而画东西者就是画家。

      本文标题:Android绘图三大基本类

      本文链接:https://www.haomeiwen.com/subject/ioikjttx.html