Метод 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