Метод saveLayer
Метод saveLayer класса Canvas рисует в отдельный слой с прозрачностью.
Новые команды попадают в слой, а не сразу на холст.
Кисть Paint слоя задаёт прозрачность, когда слой потом сольют обратно.
Синтаксис
canvas.saveLayer(bounds, paint)
Параметры
| Параметр | Описание |
|---|---|
bounds |
Прямоугольник слоя, Rect.
|
paint |
Кисть Paint.
Из неё берутся цвет, толщина и то, заливка это или контур.
|
Пример
Давайте вызовем saveLayer на CustomPaint:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(220, 100),
painter: _SaveLayerPainter(),
),
),
),
),
);
}
class _SaveLayerPainter extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
canvas.saveLayer(Rect.fromLTWH(0, 0, size.width, size.height), Paint());
canvas.drawCircle(Offset(80, 50), 30, Paint()..color = Colors.red.withValues(alpha: 0.5));
canvas.drawCircle(Offset(120, 50), 30, Paint()..color = Colors.blue.withValues(alpha: 0.5));
canvas.restore();
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
На экране виден результат рисования на холсте.
Пример
Давайте повторим рисунок в области побольше:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(280, 120),
painter: _SaveLayerPainter2(),
),
),
),
),
);
}
class _SaveLayerPainter2 extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
canvas.saveLayer(Rect.fromLTWH(0, 0, size.width, size.height), Paint());
canvas.drawCircle(Offset(80, 50), 30, Paint()..color = Colors.red.withValues(alpha: 0.5));
canvas.drawCircle(Offset(120, 50), 30, Paint()..color = Colors.blue.withValues(alpha: 0.5));
canvas.restore();
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
На экране та же фигура в более широком CustomPaint.
Смотрите также
-
класс
Canvas,
холст внутриCustomPainter -
класс
CustomPainter,
код рисунка -
класс
Paint,
кисть холста -
класс
Path,
контур фигуры