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

Класс Path

Класс Path хранит последовательность команд: перейти в точку, провести линию, замкнуть. Готовый контур рисует Canvas или отдаёт его ClipPath для обрезки. Контур сам по себе на экране не виден, пока его не нарисуют или не используют как границу.

Синтаксис

Path() ..moveTo(20, 80) ..lineTo(60, 20) ..lineTo(100, 80) ..close()

Методы

Метод Описание
addOval Добавляет овальный контур.
addRRect Добавляет скруглённый прямоугольник.
addRect Добавляет прямоугольный контур.
arcToPoint Добавляет дугу к точке.
close Замыкает контур линией к началу.
contains Проверяет, лежит ли точка внутри контура.
cubicTo Добавляет кубическую кривую Безье.
getBounds Возвращает прямоугольник, в который вписан весь контур.
lineTo Проводит отрезок к новой точке.
moveTo Переносит начало контура в точку.
quadraticBezierTo Добавляет квадратичную кривую.
relativeLineTo Сдвигает текущую точку относительно.
reset Очищает Path для нового контура.

Пример

Давайте построим треугольник:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: CustomPaint( size: const Size(220, 100), painter: _PathDemo(), ), ), ), ), ); } class _PathDemo extends CustomPainter { @override void paint(Canvas canvas, Size size) { final path = Path()..moveTo(110, 15)..lineTo(200, 85)..lineTo(20, 85)..close(); canvas.drawPath(path, Paint()..color = Colors.indigo); } @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(220, 100), painter: _PathStroke(), ), ), ), ), ); } class _PathStroke extends CustomPainter { @override void paint(Canvas canvas, Size size) { final path = Path()..addOval(Rect.fromLTWH(40, 15, 140, 70)); canvas.drawPath( path, Paint()..color = Colors.orange..style = PaintingStyle.stroke..strokeWidth = 4, ); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => false; }

На экране оранжевый овал-контур.

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

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