19

我可以使用以下示例绘制一个半圆: Flutter how to draw semicircle (half circle)

但是,该Paint对象似乎只接受一个Color(使用Paint.color)。我想添加一个RadialGradientorLinearGradient作为Color. 那可能吗?

4

1 回答 1

52

是的!这完全可以使用Paint.shader.
您可以直接使用创建渐变着色器,也可以dart:ui使用Gradient.createShader.

dart:ui坡度

import 'dart:ui' as ui;

// In your paint method
final paint = Paint()
  ..shader = ui.Gradient.linear(
    startOffset,
    endOffset,
    [
      color1,
      color2,
    ],
  );

在这里可以看到一个真实的例子。

颤动painting梯度

import 'package:flutter/painting.dart';

// In your paint method
final paint = Paint()
  ..shader = RadialGradient(
    colors: [
      color1,
      color2,
    ],
  ).createShader(Rect.fromCircle(
    center: offset,
    radius: radius,
  ));

这方面的一个例子可以在这里找到


这两者实际上是相同的。Flutter 绘画版本只是在调用时将其转换为dart:ui渐变(着色器createShader) 。它存在的原因是绘画版本更适合预构建的小部件,例如Container.

于 2020-02-01T18:20:33.037 回答