高级UI5-Canvas和Paint

前言
上一篇再讲Draw源码时,会传入一个Canvas对象,那么这篇文章我们要来分析Draw和Canvas还有Paint到底有何联系。

1.Canvas和Paint的关系

其实Canvas在我们的绘制中扮演的角色其实是会话(中间传达者),我们通常情况下都能够知道我们能使用Canvas去画圆形、矩形等等,但是最终真正的绘制并不是android层面进行,而是Native层。由此我们可以得出Canvas并不是真正的执行者,而是一个传达者,在Canvas当中我们会将所有的参数信息设置好,然后交由底层去绘制。
而在我们具体绘制的时候,都需要得到一个Paint参数:

public void drawArc(@NonNull RectF oval, float startAngle, float sweepAngle, boolean         useCenter,
            @NonNull Paint paint) {
          super.drawArc(oval, startAngle, sweepAngle, useCenter, paint);
    }

这个时候就会有疑问:Paint到底负责什么?
当我们打开Paint之后,看到最上面有一句这样的注释:

 /**
       * The Paint class holds the style and color information about how to draw(这个Paint类保存关于如何绘制的样式和颜色信息)
       * geometries, text and bitmaps.(几何、文本和位图。)
       */
      public class Paint {

可以看到这个翻译出来之后就很明显了,这个类实际上就是保存色彩与样式信息。
那么结合之前我们可以得出这样一个结论:
我们在绘制图形的时候,Canvas决定了图形的位置、形状等特性,而Paint决定了色彩和样式。
通俗一点来说:Canvas决定了一个人的高矮胖瘦,Paint决定了这个人的衣着、打扮。

你可能感兴趣的:(高级UI5-Canvas和Paint)