#flutter
#flutter
Вопрос:
У меня есть вариант использования, в котором я должен нарисовать прямоугольник, используя 4 координаты. Я не хочу использовать DrawLine (), так как позже мне понадобится детектор жестов на прямоугольнике. Как я могу рисовать с помощью drawRect ()?
canvas.drawLine(
new Offset(rectLeft, rectBottom - lineWidth / 2),
new Offset(rectRight, rectBottom - lineWidth / 2),
rectPaint
); // bottom
canvas.drawLine(
new Offset(rectLeft, rectTop lineWidth / 2),
new Offset(rectRight, rectTop lineWidth / 2),
rectPaint
); // top
canvas.drawLine(
new Offset(rectLeft lineWidth / 2, rectBottom),
new Offset(rectLeft lineWidth / 2, rectTop),
rectPaint
); //left
canvas.drawLine(
new Offset(rectRight - lineWidth / 2, rectBottom),
new Offset(rectRight - lineWidth / 2, rectTop),
rectPaint
); //right
Комментарии:
1. Добро пожаловать в Stack Overflow! Пожалуйста, взгляните на официальную документацию. Прямоугольник можно нарисовать несколькими способами. docs.flutter.io/flutter/dart-ui/Rect-class.html Если вы уже изучали это и вам чего-то не хватает или вам нужно что-то другое, пожалуйста, укажите это в вопросе.
Ответ №1:
Вам нужно создать пользовательскую схему
class YourRect extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
canvas.drawRect(
new Rect.fromLTRB(0.0, 0.0, 50.0, 50.0),
new Paint()..color = new Color(0xFF0099FF),
);
}
@override
bool shouldRepaint(YourRect oldDelegate) {
return false;
}
}
затем используйте это следующим образом:
new GestureDetector(
onTap: () {
debugPrint("hello");
},
child: Container(
width: 50,
height: 50,
child: CustomPaint(
painter: (YourdrawRect()),
),
),
),
Ответ №2:
Вы можете просто использовать create a polygon и использовать drawPath()
функцию canvas
canvas.drawPath(
Path()..addPolygon([
Offset(0, 0),
Offset(10, 0),
Offset(10, 10),
Offset(0, 10),
], true),
paint);