Jak korzystać z drawImage() Java? Nie uważam, aby dokumentacja JDK była bardzo zbliżona. Na przykład wszystkie podpisy drawImage wymagają programu ImageObserver, ale dokumentacja tego nie jest zbyt pomocna dla nowych użytkowników.Jak działa Java Graphics.drawImage() i jaka jest rola ImageObserver
Odpowiedz
Możesz uciec z Graphics.drawImage(img, x, y, null)
[lub podobnym]. Parametr ImageObserver
to wywołanie zwrotne informujące o postępie operacji przeciągania; i jest naprawdę użyteczny tylko wtedy, gdy asynchronicznie pobierasz parametr Obraz.
Aby być bardziej precyzyjne, jeśli zadzwonisz drawImage
z niekompletnie załadowanego obrazu to będzie:
- return false (natychmiast)
- wyciągnąć jak najwięcej
Image
jak to możliwe (wszystko, co jest załadowany) - i, w pewnym momencie w przyszłości, zadzwoń do
ImageObserver
gdy większa jego część jest dostępna
Zasadniczo, jeśli pracujesz z i n pamięci Image
s (albo załadowany z systemu plików, albo zbudowany przez twój program) nie martw się o parametr ImageObserver
. Jeśli ładujesz Image
sw sieci i nie oczekujesz na ich załadowanie, musisz użyć ImageObserver
, aby upewnić się, że "całkowicie" narysujesz Image
.
Właściwie użyłem drawImage()
wiele razy zawsze z parametrem ImageObserver
ustawionym na null
. OK, nie oznacza to, że jest bezużyteczny, ale zrobiłem wszystko, co było mi potrzebne, nie wiedząc o jego użyciu.
:-) tak zrobiłem - i nie miałem pojęcia, czy to będzie problem. –
Image
obiekty nie muszą być całkowicie załadowane. Jeśli zostanie wywołany Graphics.drawImage
na niekompletnym obrazie, pobierze on możliwie największą część obrazu, a następnie ostrzeże ImageObserver
(wywołując imageUpdate
), gdy załaduje się więcej obrazu.
Numer ImageObserver
może być pusty, w takim przypadku nie otrzymasz żadnego powiadomienia. Jest to częste, jeśli wiadomo, że obrazy są załadowane, lub jeśli jest już inny mechanizm robienia powtórzeń.
Zauważ, że Component
realizuje ImageObserver
, a jego metoda imageUpdate
spowoduje repaint
na obszarze zagrożonym.
'imageUpdate' jest również wywoływany dla animowanych obrazów. –
Jak inni sugerowali, ten interfejs API został pomyślany, gdy założono, że obrazy, które zostaną renderowane, będą ładowane przez sieć. Gdy poprosisz ten zestaw narzędzi o załadowanie obrazu, przyjmuje się, że jest to tylko powłoka, a bajty wymagane do poznania jej rozmiaru i pikseli nadal przeszukują drut.
W takim przypadku drawImage może nic nie renderować po pierwszym wywołaniu. Gdy rozmiar i piksele staną się dostępne, serwer ImageObserver zostanie powiadomiony. W przypadku Component implements ImageObserver
jego zachowanie polega na przemalowaniu, gdy dane są dostępne.
- 1. Jak sprawdzić, jaka jest rola aktualnego użytkownika?
- 2. Jaka jest rola wiązania I * w Eclipse JDT?
- 3. Java RMI: Jaka jest rola szkieletu generowanego przez kompilator rmic
- 4. Jaka jest rola falcor w architekturze mikroserwisu?
- 5. Jaka jest rola warstwy TimeDistributed w Keras?
- 6. Jaka jest rola _Pvt_Extensions w Lightswitch
- 7. Rola #ifdef i #ifndef
- 8. Jaka jest rola kolumny "JEST ZAMKNIĘTE" w obszarze transakcji magento?
- 9. Jaka jest rola `while`-loops w wyrażeniach obliczeniowych w F #?
- 10. Jaka jest rola content_main.xml w Android studio 1.4?
- 11. Jaka jest różnica między java i jsp?
- 12. Graphics.DrawImage: Wyjątek z pamięci
- 13. Czym dokładnie jest "rola" w Capistrano?
- 14. Rola WWW a rola pracownika w usługach w chmurze/Node.js
- 15. Rola EventBus w GWT
- 16. FOSUserBundle i ACL Business Rola
- 17. Co to są wątki robocze i jaka jest ich rola w strukturze reaktora?
- 18. Jaka jest różnica między Array i WrappedArray w Scali
- 19. Jak działa generator losowy Java?
- 20. Czy Graphics.DrawImage jest zbyt wolny dla większych obrazów?
- 21. Jaka jest różnica między operatorem Java equals() i C++ ==?
- 22. Jaka jest różnica między Jarsignerem Java 1.6 i 1.7
- 23. Jaka jest różnica między Float i float w java?
- 24. Jaka jest różnica między? : i ||
- 25. Jaka jest wartość maksymalna dla Java Duration
- 26. Jaka jest złożoność czasu HashMap.containsValue() w java?
- 27. Jaka jest obecnie popularna biblioteka Java SIP?
- 28. Jaka jest złożoność czasu HashMap.containsKey() w java?
- 29. Grails Spring Security Rola i grupa
- 30. Jaka jest różnica między JFrame.getContentPane() i JFrame.getRootPane()?
Wielkie dzięki to jest naprawdę pomocne. –