前言
上一篇再講Draw源碼時俭缓,會傳入一個Canvas對象,那么這篇文章我們要來分析Draw和Canvas還有Paint到底有何聯(lián)系贴届。
1.Canvas和Paint的關系
其實Canvas在我們的繪制中扮演的角色其實是會話(中間傳達者)起宽,我們通常情況下都能夠知道我們能使用Canvas去畫圓形、矩形等等竣况,但是最終真正的繪制并不是android層面進行,而是Native層饶囚。由此我們可以得出Canvas并不是真正的執(zhí)行者帕翻,而是一個傳達者,在Canvas當中我們會將所有的參數(shù)信息設置好萝风,然后交由底層去繪制嘀掸。
而在我們具體繪制的時候,都需要得到一個Paint參數(shù):
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決定了這個人的衣著、打扮刹前。