Graphics2D java tutorial
sabunia portal
Tk wrote:
Witam,
Wlasnie sprawdzam sobie nowe udoskonalenia w java 6.0, proboje jak wyzej w
temacie zrobic splashscreen sugerowalem sie tutorialem :
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/mustang/....
I
mam problem z: Graphics2D g = (Graphics2D)splash.getGraphics();
otrzymuje bląd :
Exception in thread "main" java.lang.Error: Unresolved compilation
problem:
The method getGraphics() is undefined for the type SplashScreen
korzystam z jre system library [jre 1.6.0] prubowal ktos juz cos takiego
robic ? co robie nie tak ?
API zostało zmienione... i tutorial zrobił się lekko nieaktualny :)
Użyj:
Graphics2D g = splash.createGraphics();
Graphics jest Kontekstem rysowania. W Javie na JPanel, czy Component rysuje
sie tylko na obiektach Graphics. Patrz w dokumentacji mozliwosci Graphics2D.
Moim zdaniem sa olbrzymie i wcale nie takie wolne jakby sie wydawalo.
Robilem gierke i da sie kanal Alpha, wypelnianie ksztaltow typu polygon
gradientem w czasie rzeczywistym, AntiAliasing rysowania (dla ksztalotow w
czasie rzeczywistym ale oczywiscie bez przesady :) ). Trzeba uwazac z
wypelnianiem duzych obszarow ale zawsze mozna wczesniej przygotowac obrazek
poprzez BufferedImage.
Sa tez mozliwosci wypelniania deseniem )pixmapa) ale juz nie w 30FPS :(
Generalnie gierki 2D bez akceleracji da sie pisac, ktore beda dzialac fajnie
na "aktualnym" sprzecie.
Mozliwosci jest sporo i przy odpowiednim "manipulowaniu" i rozmyslnym
uzywaniu da sie zrobic bez AKceleracji (przez Java 3D Open GL).
Ale wykozystujac akceleracje to wszytsko bedzie znowu z 5x szybsze.
Adam wrote:
Do robienia prostej gierki to i konsola wystarczy.
Jesli pytasz o szybkie rysowanie grafiki,
to potrzebne ci raczej Java2D i active rendering,
do czego wystarczy awt.Component;
czym rozni sie awt.Graphics od awt.Component ? czy wiez gdzie moglbym
znalezc jakies tutoriale na ten temat, w ksiazce do javy 1.1 znalazlem
tylko jakis rozdzial na temat fontow i prostej grafiki(koła,kwadraty itp.)
mozna tez spojrzec na Java Advanced Imaging.
jak zapoznam sie z awt to rozniew na to spojrze
On Wed, 12 Jul 2006 21:25:33 +0200
clyde <clyde_no@spam_cydlabs.comwrote:
Tak jak juz ktos napisal Graphics2D i klasy pomocnicze.
Jest tego sporo. Z wydajnoscia jest roznie. Generalnie coraz lepiej,
chodz poczatki byly ciezkie.
Sun doklada staran, by operacje z Graphics2D byly wykonywane ze
wsparciem opengl lub directdraw.
Sa specjalne flagi, ktore domyslnie sa wylaczone ze wzgledu na
kompatybilnosc. Prawdopodobnie niedlugo wsparcie dla Graphics2D zostanie
calkowicie przeniesione na karty grafincze. Ale tylko prawdopodobnie ;)
http://java.sun.com/j2se/1.5.0/docs/guide/2d/flags.html#opengl
a jak z wczytywaniem bitmap i ich wyswietlaniem, czy sam musze je odczytywac bajt po bajcie i interpetowac czy sa jakeis gotowe klasy i czy sa jakies klasy ktore oferowalyby mi przezroczystosc?
Moze jakies namiary na tutoriale?
Witam,
Mam sobie panel z jakimis moimi wypocinami namalowanymi ( normalny
Graphics2D ) i potrzebuje to odswierzyc. Repaint dziala bardzo ladnie z
jedna wada: zeby zadzialal musze np. przesunac okienko za pole wyswietlania
monitora i wrocic zeby bylo widac przemalowany obrazek. Widzialem w
tutorialu java.sun.com ( przy okazji tlumaczenia MouseListenerow i
MouseMoutionListenerow ) ze oni uzywaja tego repainta i on sie im ladnie
odswierza. Dlaczego moj nie dziala a ich dziala? Wiem ze jest jakies
normalne logiczne wytlumaczenie ale ja go nigdzie nie moge znalezc :
pozdrawiam Adam
Adam Kaliński <muad@pf.plnapisał(a):
Witam,
Mam sobie panel z jakimis moimi wypocinami namalowanymi ( normalny
Graphics2D ) i potrzebuje to odswierzyc. Repaint dziala bardzo ladnie z
jedna wada: zeby zadzialal musze np. przesunac okienko za pole wyswietlania
monitora i wrocic zeby bylo widac przemalowany obrazek. Widzialem w
tutorialu java.sun.com ( przy okazji tlumaczenia MouseListenerow i
MouseMoutionListenerow ) ze oni uzywaja tego repainta i on sie im ladnie
odswierza. Dlaczego moj nie dziala a ich dziala? Wiem ze jest jakies
normalne logiczne wytlumaczenie ale ja go nigdzie nie moge znalezc :
pozdrawiam Adam
funkcja update(Graphics) dla JPanel ?
No tu jest problem bo oprocz J2SE np 1.4 potrzebujesz Java3D i do tego
jeszcze Czegos co wrappuje Java3D do Open GL. (Tak przynajmniej bylo kiedys,
moze juz jest to razem).
Zatem kazdy, kto bedzie chcial zagrac w twoja gre (czy w applecie czy jako
aplikacje) bedzie musial miec to wszystkie "paczki". Dlatego "ciezar"
rosnie. Zatem jak jest to prosta gra to proponuje PURE 1.1. Dla mnie to za
,malo bylo a poza tym juz czas skonczyc z tym "Syfem" zgodnosci z MVM. Jak
rozsadne 2D ci wystarczy to j2SE 1.3+ a jak nie to juz Java 3D i tutoriale
do tego. Ale czystych procedur OpenGL to tam raczej nie ma. Wszystko
opakowane w klasy i Obiekty. Proponuje tutoriale
clyde wrote:
Graphics jest Kontekstem rysowania. W Javie na JPanel, czy Component
rysuje sie tylko na obiektach Graphics. Patrz w dokumentacji mozliwosci
Graphics2D. Moim zdaniem sa olbrzymie i wcale nie takie wolne jakby sie
wydawalo. Robilem gierke i da sie kanal Alpha, wypelnianie ksztaltow
typu
polygon gradientem w czasie rzeczywistym, AntiAliasing rysowania (dla
ksztalotow w czasie rzeczywistym ale oczywiscie bez przesady :) ).
Trzeba
uwazac z wypelnianiem duzych obszarow ale zawsze mozna wczesniej
przygotowac obrazek poprzez BufferedImage.
Sa tez mozliwosci wypelniania deseniem )pixmapa) ale juz nie w 30FPS :(
Generalnie gierki 2D bez akceleracji da sie pisac, ktore beda dzialac
fajnie na "aktualnym" sprzecie.
Mozliwosci jest sporo i przy odpowiednim "manipulowaniu" i rozmyslnym
uzywaniu da sie zrobic bez AKceleracji (przez Java 3D Open GL).
dalej nie bardzo rozumiem roznice miedzy graphics a Component
Ale wykozystujac akceleracje to wszytsko bedzie znowu z 5x szybsze.
wiec jak sie uzywa akceleracji w javie, czy jest jakas klasa przeznaczonoa
specjalenie do opengl i czy moge z wnetrza tej klasy uzywac normalnych
fukcji opengl?
a co do Graphics i Component to jest taka metoda w nim jak paint(Graphics g)
(w Component i pokrewnych Panel, czy JCOmponent a potem JPanel)ktora jest
wywolywana jezeli zajdzie potrzeba przerysowania czy to z AWT czy wymuszona
poprzez repaint()
I ona w argumencie ma kontekst Graphics tego obszaru do ktorego masz dostep
powiedzmy niskopoziomowy. Na nim mozesz sobie rysowac, malowac, a poza tym w
SWING mozesz rzutowac do Graphics2D i tam masz juz sporo zabawy :)
Generalnie czytaj tutoriale o systemie przerysowania w Javie o raz API
clyde wrote:
Graphics jest Kontekstem rysowania. W Javie na JPanel, czy Component
rysuje sie tylko na obiektach Graphics. Patrz w dokumentacji mozliwosci
Graphics2D. Moim zdaniem sa olbrzymie i wcale nie takie wolne jakby sie
wydawalo. Robilem gierke i da sie kanal Alpha, wypelnianie ksztaltow
typu
polygon gradientem w czasie rzeczywistym, AntiAliasing rysowania (dla
ksztalotow w czasie rzeczywistym ale oczywiscie bez przesady :) ).
Trzeba
uwazac z wypelnianiem duzych obszarow ale zawsze mozna wczesniej
przygotowac obrazek poprzez BufferedImage.
Sa tez mozliwosci wypelniania deseniem )pixmapa) ale juz nie w 30FPS :(
Generalnie gierki 2D bez akceleracji da sie pisac, ktore beda dzialac
fajnie na "aktualnym" sprzecie.
Mozliwosci jest sporo i przy odpowiednim "manipulowaniu" i rozmyslnym
uzywaniu da sie zrobic bez AKceleracji (przez Java 3D Open GL).
dalej nie bardzo rozumiem roznice miedzy graphics a Component
Ale wykozystujac akceleracje to wszytsko bedzie znowu z 5x szybsze.
wiec jak sie uzywa akceleracji w javie, czy jest jakas klasa przeznaczonoa
specjalenie do opengl i czy moge z wnetrza tej klasy uzywac normalnych
fukcji opengl?
Cytat
A sami byli dla siebie większym ciężarem niż ciemność. Mdr 17,20
A sami byli dla siebie większym ciężarem niż ciemność. Mdr 17,20_2