LostOblivion Skrevet 22. januar 2007 Skrevet 22. januar 2007 Hei, Lurte på om noen har innsikt i hvordan man gjør samme oppgaven som under, bare i Graphics2D og med antialiasing på? public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(new Color(50, 0, 255)); // f eks g.fillOval(50, 80, 10, 10); // f eks } Takk! Skriver mange poster for tiden, men det er ingen bedre måte å lære på enn å suge ut info (beklager ordvalget her...) av de lærde.
krigun Skrevet 22. januar 2007 Skrevet 22. januar 2007 Sure thing, public void paint(Graphics graphics) { Graphics2D g2 = (Graphics2D)graphics; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2.setColor(new Color(0x3200FF)); g2.fillOval(50, 80, 10, 10); } Som du ser, akkurat samme greia. Graphics2D har bare endel ny funksjonalitet. PS: Er anbefalt å bruke et buffer for offscreen rendering AKA double buffering for smoothere animasjon osv, eks på dette: http://www.realapplets.com/tutorial/DoubleBuffering.html
LostOblivion Skrevet 23. januar 2007 Forfatter Skrevet 23. januar 2007 WOW. Thanks! Jøsses. Java er jo LETT! Slapp av bare tuller. Fortsatt mye å lære, men takk for dette. =] Kan brukes som med alle Graphics objekter også assa? Nice...
LostOblivion Skrevet 23. januar 2007 Forfatter Skrevet 23. januar 2007 Haha. Nå ble det utslag på lag-o-meteret hvertfall. Er det flere levels med antialiasing som kan redusere laggen? Eller noen andre måter?
krigun Skrevet 23. januar 2007 Skrevet 23. januar 2007 (endret) Haha. Nå ble det utslag på lag-o-meteret hvertfall. Er det flere levels med antialiasing som kan redusere laggen? Eller noen andre måter? 7779366[/snapback] hehe, lag-o-meteret vil nok peake med antialiasing på, og fullscreen repaint. Derfor er det viktig å repainte kun de "skitne" områdene av skjermen. Dette kan for eksempel gjøres hvis du definerer en grense rundt hver ball, og kun repainter området +- 10px rundt hver ball for hver repaint. Da bruker du: repaint(int x, int y, int witdh, int height) metoden, som du da definerer hvilke områder av skjermen du vil tegne opp på nytt. Så hvis en av ballene er innenfor [10, 10, 40, 40], så kaller du repaint(0, 0, 50, 50). Get it? Dette vil nok gi deg fantastiske resultater i hastighet, hvis du får det til. PS: I Java2D kan du kun skru av og på antialiasing, såvidt meg bekjent. Endret 23. januar 2007 av krigun
LostOblivion Skrevet 23. januar 2007 Forfatter Skrevet 23. januar 2007 Hmmm. Reduserte ikke noe merkbart med lag. Vel. Takk for tipset! =]
krigun Skrevet 23. januar 2007 Skrevet 23. januar 2007 Hmmm. Reduserte ikke noe merkbart med lag. Vel. Takk for tipset! =] 7780669[/snapback] jaja, var vel litt korttenkt av meg, er vel bare selve antialiasingen som reduserer hastigheten Det er vel flere triks for å gjøre det litt bedre, blant annet ved å bruke VolatileImage som backbuffer (VolatleImage skal kunne være HW aksellerert), eksempelkode kan du se på: http://weblogs.java.net/blog/chet/archive/...ileimage_n.html Du kan også prøve med å starte app-en din med: java -Dsun.java2d.opengl=true PhysX har personlig ikke hatt stort hell med den siste da, men er verdt et forsøk. _SKAL_ visst funke på Java 6
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå