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

Метод paint

Метод paint класса TextPainter рисует текст в точке offset на переданном Canvas. Перед вызовом нужен успешный layout.

Синтаксис

painter.paint(canvas, offset)

Параметры

Параметр Описание
canvas Холст для рисования. Обычно из CustomPainter.
offset Смещение левого верхнего угла текстового блока.

Пример

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

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: CustomPaint( painter: _LabelPainter(), size: Size(200, 40), ), ), ), ), ); } class _LabelPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { TextPainter painter = TextPainter( text: TextSpan( text: 'abcde', style: TextStyle(color: Colors.black, fontSize: 18), ), textDirection: TextDirection.ltr, ); painter.layout(maxWidth: size.width); painter.paint(canvas, Offset.zero); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => false; }

На экране по центру появится нарисованная строка 'abcde'.

Пример

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

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: CustomPaint( painter: _ShiftedPainter(), size: Size(200, 60), ), ), ), ), ); } class _ShiftedPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { TextPainter painter = TextPainter( text: TextSpan( text: '12345', style: TextStyle(color: Colors.blue, fontSize: 16), ), textDirection: TextDirection.ltr, ); painter.layout(maxWidth: size.width); painter.paint(canvas, Offset(20, 10)); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => false; }

На экране синяя строка '12345' будет с отступом от левого верхнего угла области рисования.

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

  • метод layout,
    который нужно вызвать перед paint
  • класс TextPainter,
    который хранит разложенный текст
  • класс TextStyle,
    который задаёт вид символов при рисовании
  • виджет Text,
    который рисует текст без ручного Canvas
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить