Muszę malować sektor okręgu w trzepotanie. Użyłem tego kodu

canvas.drawArc(
    Rect.fromCircle(
        center: Offset(size.width / 2, size.height - 50),
        radius: size.width / 2),
    degrees,
    width,
    true,
    paint);

I działało dobrze. Jednak dla nieuchronnych powodów nie mogę użyć tej metody i muszę użyć metody

canvas.drawPath()

Za to potrzebuję ścieżki, ale ma tylko opcje tworzenia łuku, a nie sektora.

2
Ryosuke 28 luty 2019, 16:23

2 odpowiedzi

Najlepsza odpowiedź

Dokumentacja Path#arcTo mówi:

Jeśli argument forceMoveTo jest fałszywy, dodaje linię prostą segment i segment łuku. [...] Dodano segment linii, jeśli forceMoveTo jest fałszywy zaczyna się od bieżący punkt i kończy na początku łuku.

Więc ten kod wyciągnie segment:

Offset center = Offset(250, 250);
Rect rect = Rect.fromCircle(center: center, radius: 200);
Path path = Path()
  // set the "current point"
  ..moveTo(center.dx, center.dy)
  ..arcTo(rect, pi / 4, pi / 2, false);
canvas.drawPath(path, p);
2
pskink 1 marzec 2019, 08:00

Powinieneś być w stanie utworzyć ścieżkę z tymi samymi parametrami używanymi w Drapharc ()

Spróbuj czegoś takiego

Path.arcTo(Rect.fromCircle(center: Offset(size.width / 2, size.height - 
50),radius: size.width / 2), degrees, width, true,)

Następnie użyj zwracanej ścieżki w płótnie.drawpath ()

0
Hussein Abdallah 28 luty 2019, 16:01