Ik heb het volgende probleem, ik heb een groot plaatje van bijvoorbeeld 1000x1000 pixels in een BufferedImage. Vervolgens heb ik een soort van navigatiepaneel (rechtsboven) op m'n scherm waarmee ik over een verkleinde versie van dat hoofdplaatje beweeg met een selectie-vierkantje. Op mijn *hoofdscherm* zie je een vergroting van het geselecteerde stukje. Bezie dit allemaal als een soort van Dune2-achtige interface.

Dan nu de code die het doet (beetje pseudonamen gebruikt):
Werkt op zich prima, alleen het gaat soepel zolang het hoofdplaatje ~ 400x400 pixels is. Ga ik met hoofdplaatjes werken groter dan ~ 400x400 pixels dan gaat de snelheid steeds meer naar beneden wanneer ik er overheen beweeg - je scrollt dan als het ware over de map heen, wederom net als in bijv. Dune.
Enkele dingen die ik tegen ben gekomen is VolatileImage-klasse, iets met clipping te doen e.d. Maar zoiets als een simpele getsubimage zou toch gewoon snel moeten zijn?

Dan nu de code die het doet (beetje pseudonamen gebruikt):
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| BufferedImage hoofdplaatje = new BufferedImage(1000,1000, BufferedImage.TYPE_INT_RGB); public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2context = (Graphics2D)g; BufferedImage subimage = hoofdplaatje.getSubimage(getAbsoluteX(), getAbsoluteY(), ovp.getBlocksize(), ovp.getBlocksize()); g2context.drawImage(subimage,0,0, getSize(), getSize(), this); //getSize() is in dit geval de grootte van het grote vierkant in het plaatje hierboven g2context.dispose(); } |
Werkt op zich prima, alleen het gaat soepel zolang het hoofdplaatje ~ 400x400 pixels is. Ga ik met hoofdplaatjes werken groter dan ~ 400x400 pixels dan gaat de snelheid steeds meer naar beneden wanneer ik er overheen beweeg - je scrollt dan als het ware over de map heen, wederom net als in bijv. Dune.
Enkele dingen die ik tegen ben gekomen is VolatileImage-klasse, iets met clipping te doen e.d. Maar zoiets als een simpele getsubimage zou toch gewoon snel moeten zijn?
[ Voor 5% gewijzigd door Tjeerd op 30-08-2006 10:59 ]
www.tjeerd.net - To repeat what others have said, requires education, to challenge it, requires brains.