Skip to content

API 參考:Paint

Paint 類別定義了在 Canvas 上繪圖時使用的樣式、顏色和效果。它是一個輕量級物件,可以在多個繪圖呼叫中重複使用。

核心屬性

顏色與透明度

  • setColor(int color):設定 ARGB 顏色。
  • setAlpha(int alpha):僅設定 alpha(透明度)分量(0-255)。
  • setColor4f(Color4f color, ColorSpace space):使用浮點數值設定顏色以獲得更高精度。

樣式

  • setMode(PaintMode mode):決定繪製是填充形狀內部(FILL)、描繪輪廓(STROKE),還是兩者兼具(STROKE_AND_FILL)。
  • setStrokeWidth(float width):設定描邊的粗細。
  • setStrokeCap(PaintStrokeCap cap):定義描邊線條端點的形狀(BUTT、ROUND、SQUARE)。
  • setStrokeJoin(PaintStrokeJoin join):定義描邊線段如何連接(MITER、ROUND、BEVEL)。

抗鋸齒

  • setAntiAlias(boolean enabled):啟用或停用邊緣平滑。強烈建議在大多數 UI 繪製中使用。

效果與著色器

Paint 物件可以透過各種效果增強,以創建複雜的視覺效果。

著色器(漸層與圖案)

著色器根據每個像素的位置定義其顏色。

  • setShader(Shader shader):套用線性漸層、徑向漸層或圖像圖案。

顏色濾鏡

顏色濾鏡在繪製前修改來源的顏色。

  • setColorFilter(ColorFilter filter):套用顏色矩陣、混合模式或亮度轉換。

遮罩濾鏡(模糊)

遮罩濾鏡影響繪製的 alpha 通道。

  • setMaskFilter(MaskFilter filter):主要用於創建模糊和陰影效果。

圖像濾鏡

圖像濾鏡更為複雜,可以影響整個繪製結果。

  • setImageFilter(ImageFilter filter):用於模糊、投影以及組合多種效果。

使用範例

java
Paint paint = new Paint()
    .setColor(0xFF4285F4)
    .setAntiAlias(true)
    .setMode(PaintMode.STROKE)
    .setStrokeWidth(4f)
    .setStrokeJoin(PaintStrokeJoin.ROUND);

canvas.drawRect(Rect.makeXYWH(10, 10, 100, 100), paint);

效能注意事項

創建 Paint 物件相對較快,但在緊密迴圈中頻繁修改可能會產生一些開銷。通常建議在屬性不變的情況下,預先準備好 Paint 物件並在渲染過程中重複使用。