Zaimplementowałem długą metodę onDraw
, która rysuje zestaw prostokątów. Prostokąty są za małe i chcę, żeby wyglądały na większe. Ale niestety nie mogę zmienić współrzędnych prostokąta, ponieważ są one przechowywane w bazie danych. Czy istnieje sposób powiększenia obszaru roboczego przy użyciu canvas.scale()
?Powiększyć obraz za pomocą funkcji canvas.scale?
Odpowiedz
Zamierzam poprzedzić tę odpowiedź, mówiąc, że musisz narysować wszystko co 0,0, a następnie przeskalować i ostatecznie przetłumaczyć, aby zachowywała się poprawnie.
Wystarczy wykonać następujące czynności w OnDraw metody:
canvas.save();
canvas.translate(xValue, yValue);
canvas.scale(xScale, yScale)
/* draw whatever you want scaled at 0,0*/
canvas.restore();
xScale kurczy się lub rozciąga się w kierunku X, yScale kurczy się lub rozciąga się w kierunku Y.
1.0 jest domyślny dla tych, więc 2,0 rozciągnęłoby go dwukrotnie, a 0,5 zmniejszyłoby go o połowę.
przykład:
canvas.save();
canvas.translate(50, 50);
canvas.scale(0.5f, 0.5f);
canvas.drawRect(0.0, 0.0, 5.0, 5.0, paint);
canvas.restore();
to wyciągnie prostokąta o długości 5,0 i szerokość 5,0, skalowanie w dół do 2,5 na długość i szerokość, a następnie przenieść do (50, 50).
Wynik zostanie prostokąt narysowany jako jeśli to zrobił:
canvas.drawRect(50.0, 50.0, 52.5, 52.5, paint);
Mam nadzieję, że to pomoże!
, ale działają inaczej na skalach w urządzeniach o różnej rozdzielczości. – zionpi
nie ma wpływu na skalę, ponieważ mówimy tylko o pikselach. –
Na wypadek, gdyby ktoś przyszedł tutaj, szukając rozwiązania dla sieci (tak jak ja to zrobiłem =). Oto przykład poprawionego kodu: 'context.translate (50, 50); context.scale (0,5, 0,5); context.fillRect (0.0, 0.0, 5.0, 5.0); ' –
- 1. Szczypta, aby powiększyć za pomocą CSS3
- 2. Jak powiększyć wykres utworzony za pomocą CGContextRef
- 3. Android canvas.scale (-1,1)
- 4. Jak przesłać plik/obraz za pomocą funkcji tastypie
- 5. jak powiększyć obraz do określonych współrzędnych w Androidzie
- 6. Wyszarzają obraz za pomocą CSS?
- 7. Jak przyciąć obraz za pomocą php za pomocą jquery imgAreaSelect?
- 8. Sortowanie za pomocą funkcji porównanie funkcji
- 9. Jak zapisać obraz za pomocą obrazu django?
- 10. Jak wstawić obraz za pomocą HTML.ActionLink?
- 11. Załaduj obraz za pomocą Phonegap: InvalidCastException
- 12. Umieść obraz pośrodku komórki za pomocą migradoc
- 13. Jak pixelować/rozmazać obraz za pomocą ImageMagick?
- 14. Jak odczytać obraz za pomocą PHP?
- 15. Jak zapisać obraz za pomocą libcurl
- 16. Narysuj docelowy obraz za pomocą kakao Touch
- 17. odwrócić obraz svg za pomocą css?
- 18. Jak obrócić obraz losowo za pomocą CSS?
- 19. Pokaż/ukryj obraz za pomocą JavaScriptu
- 20. Załaduj obraz za pomocą Google Volley
- 21. Dostosuj obraz logo za pomocą Bootstrap
- 22. Jak wyświetlić obraz za pomocą Pillow?
- 23. Jak mogę zmienić obraz za pomocą CamanJS?
- 24. (jak) mogę pobrać obraz za pomocą JSoup?
- 25. Jak przesunąć obraz tła za pomocą css
- 26. Wyświetl obraz Ashx za pomocą jQuery?
- 27. Jak ustawić obraz kursora za pomocą jQuery?
- 28. Konwertuj obraz na cyfry za pomocą PHP?
- 29. Załaduj kodowany obraz base64 za pomocą FormData?
- 30. Jak zrobić obraz 3D za pomocą CSS
"Ale niestety nie mogę zmienić współrzędnych prostokąta, ponieważ są przechowywane w bazie danych" Dlaczego? otrzymujesz współrzędne z DB i mnożysz przez dowolny współczynnik skali, który potrzebujesz przed drawRectangle(). – Simon
Czy mogę w ten sposób zaimplementować funkcję powiększenia? – Ruby
x = getValueFromDatabase(), y = getValueFromDatabase(), x = x * 5; y = y * 5; drawRectangle (x, y). Co jest nie tak z czymś takim? Chodzi mi o to, dlaczego przechowywanie wartości w bazie danych uniemożliwia rysowanie większych prostokątów? Nie rozumiem tego. Oczywiście możesz zmienić współrzędne prostokąta. Możesz zrobić z nich wszystko, co chcesz. – Simon