Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
292 of 1024 menu
◀ ▶

Метод restore

Метод restore класса Canvas возвращает состояние после save. Без предшествующего save восстанавливать нечего. После вызова холст снова в том сдвиге и обрезке, какие были в снимке.

Синтаксис

canvas.restore()

Пример

Давайте вызовем restore на CustomPaint:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: CustomPaint( size: const Size(220, 100), painter: _RestorePainter(), ), ), ), ), ); } class _RestorePainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { canvas.save(); canvas.translate(60, 0); canvas.drawCircle(Offset(40, 50), 20, Paint()..color = Colors.grey); canvas.restore(); canvas.drawCircle(Offset(40, 50), 20, Paint()..color = Colors.red); } @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: _RestorePainter2(), ), ), ), ), ); } class _RestorePainter2 extends CustomPainter { @override void paint(Canvas canvas, Size size) { canvas.save(); canvas.translate(60, 0); canvas.drawCircle(Offset(40, 50), 20, Paint()..color = Colors.grey); canvas.restore(); canvas.drawCircle(Offset(40, 50), 20, Paint()..color = Colors.red); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => false; }

На экране та же фигура в более широком CustomPaint.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить