Toon posts:

[java] ImageIcon, JLabel en Point

Pagina: 1
Acties:

Verwijderd

Topicstarter
Middag...

Ik wil het volgende:

- ik wil een ImageIcon in een JLabel representeren
=> new JLabel(ImageIcon).....da's niet moeilijk

Over deze image Icon wil ik pixels (lees points) "plotten"
=> g.fillRect(point.x - 1,point.y - 1, 2, 2);

- Nu de lastige....als ik nu mijn frame ga verschuiven of mijn imageicon wil resizen, dan resizen en verschuiven mijn points natuurlijk niet automatisch mee.

Weet iemand of daar een simpele oplossing voor is?

Ik kan niet iedere keer de punten opnieuw tekenen, want dan zou ik bij iedere actie 60*750*1400 punten opnieuw moeten tekenen....en dat vertraagd nogal.

Misschien weet iemand of ik de points IN een imageicon kan tekenen?

Verwijderd

Topicstarter
voor de geinteresseerden:

- eigen class JLabel laten extenden en niet met de image de constructor van JLabel aanroepen
- eigen class de paintComponent functie laten overriden
- Daar de image met het Graphics object tekenen en vervolgens de punten erbij

Het is zo makkelijk....als je even nadenkt

Verwijderd

Je kan met behulp van ImageIcon icon = label.getIcon(); het icon uit het label vissen.
met Image plaatje = icon.getImage() kan je het plaatje uit het icon halen.

van dit plaatje kan je de grafische context benaderen door:
Graphics g = plaatje.getGraphics();
vervolgens kan je met g.drawIets() tekenen op het plaatje.

Echter, om punten te tekenen kan het handiger zijn om van het plaatje een BufferedImage te maken en vervolgens met de methode getRaster() het raster te verkrijgen.
Met dit raster kan je met behulp van de methodes van WritableRaster het plaatje op bitniveau aanpassen.

met de methode label.repaint(), wordt het plaatje getekend.

Voor meer info verwijs ik naar de SDK Docs.

Verwijderd

Topicstarter
Op woensdag 27 februari 2002 15:28 schreef DaMike het volgende:
Je kan met behulp van ImageIcon icon = label.getIcon(); het icon uit het label vissen.
met Image plaatje = icon.getImage() kan je het plaatje uit het icon halen.
is niet nodig....heb namelijk al een image opgeslagen in mijn object
van dit plaatje kan je de grafische context benaderen door:
Graphics g = plaatje.getGraphics();
vervolgens kan je met g.drawIets() tekenen op het plaatje.
Werkt dus niet......kan alleen als de image is aangemaakt met een createImage(..)

Zie de SDK zou ik zeggen :)
met de methode label.repaint(), wordt het plaatje getekend.
Da's me helemaal duidelijk..aangezien die de paintComponent() aanroept waar ik het mijn vorige post over had

Verwijderd

Op woensdag 27 februari 2002 15:49 schreef mr.beidehand het volgende:

[..]

Werkt dus niet......kan alleen als de image is aangemaakt met een createImage(..)
Kan je ook doen.


image = createImage() dan g = image.getGraphics() g.drawImage() g.fillRect() enz..

een andere oplossing is m.b.v. een Pixelgrabber, het plaatje in een array plaatsen, array aanpassen, MemoryImagesource maken , image = createImage(memoryImageSource).