Klikalny element canvas

Klikalny element canvas
kubusisko
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Planując projekt nie chciałem ręcznie sprawdzać, bo byłem na uczelni i zapytałem chatGPT, czy można tak jak w HTML, JavaScript zrobić klikalne elementy svg. Dostałem odpowiedź, że tak. Przygotowałem dość zaawansowaną grafikę svg w Inkscape i podczas próby przeniesienia jej do Compose napotkałem problem. O ile udało mi się szybko napisać program, który konwertuje svg na elementy Path do Canvas, o tyle drawPath nie obsługuje clickable, ani on click. Czy istnieje inne podejście do wykonania tego zadania bądź jak matematycznie napisać hitboxy elementów na podstawie ścieżki SVG.

Dla jasności potrzebuje obrazku układu mięśniowego człowieka, tak by po kliknięciu wybranej partii mięśni ta zmieniła kolor.

KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 94
0

Pewnie już rozwiazales ale możesz obrazek opakować w boxa?
Wtedy potencjalnie mógłbyś użyć na boxie

Kopiuj
Modifier.clickable { onItemClick() }
kubusisko
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0
Kerubyte napisał(a):

Pewnie już rozwiazales ale możesz obrazek opakować w boxa?
Wtedy potencjalnie mógłbyś użyć na boxie
Modifier.clickable { onItemClick() }

Wtedy cały obrazek będzie jednym elementem do klikania, a ja potrzebuję klikania na pojedyncze jego elementy. Na razie próbowałem kilku rozwiązań, ale były nieoptymalne, jak znajde rozwiązanie które dla mnie działa, to wstawię.

JZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Żeby to działało na fragmencie obrazka to musisz to jakoś zdefiniować. Tzn określić który obszar ma być "klikalny" i wtedy zrobić obsługę tego
Ja do tego typu rozwiązania użyłem AsyncImage i potem

Kopiuj
.pointerInput(Unit) {
        detectTapGestures(
         onTap = { tapOffset ->

Oczywiście pobierając poszczególne strony tzn "gazetki" pobieram też definicję tych obszarów. Definicja była pierwotnie zrobiona pod stronę WWW, więc jest tam plik html w którym jest definicja warstwy jako SVG. Oczywiście taką definicję można zrobić na wiele sposobów. W moim przypadku klient ma aplikację do definicji obszarów i przypisywanie towarów do obszarów - jako tło jpeg
Program generuje im pliki na WWW i z tych plików ja również pobieram definicję obszaru.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.