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

Метод relativeLineTo

Метод relativeLineTo класса Path добавляет отрезок на dx и dy от текущей позиции. Числа это не координаты холста, а прибавка к текущей точке. Отрицательное число идёт влево или вверх.

Синтаксис

Path.relativeLineTo()

Пример

Давайте построим контур через relativeLineTo:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: CustomPaint( size: const Size(220, 100), painter: _PathRelativelinetoPainter(), ), ), ), ), ); } class _PathRelativelinetoPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { final path = Path(); path.moveTo(40, 50); path.relativeLineTo(120, 0); final paint = Paint() ..color = Colors.deepPurple ..strokeWidth = 3 ..style = PaintingStyle.stroke; canvas.drawPath(path, paint); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => false; }

На экране линия или контур, построенный через Path.

Пример

Давайте утолщим линию:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: CustomPaint( size: const Size(220, 100), painter: _PathRelativelinetoPainter2(), ), ), ), ), ); } class _PathRelativelinetoPainter2 extends CustomPainter { @override void paint(Canvas canvas, Size size) { final path = Path(); path.moveTo(40, 50); path.relativeLineTo(120, 0); paint.strokeWidth = 6; final paint = Paint() ..color = Colors.deepPurple ..strokeWidth = 3 ..style = PaintingStyle.stroke; canvas.drawPath(path, paint); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => false; }

На экране тот же контур с более толстой линией.

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

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