16. juli 2002 - 10:10Der er
5 kommentarer og 1 løsning
Resizing vha. double buffering
Hej!
Jeg sidder og roder med noget grafik i størrelsen 1024x576 (wide-screen). Desværre har jeg kun mulighed for at se det i en opløsning på 720x576. Derfor ville det være smart med et panel, der med double buffering kan resize grafikken til en bredde på 720 og derefter tegne den...
På suns hjemmeside finder jeg et eksempel på double buffering:
/** * paint children into an offscreen buffer, then blast entire image * at once. */ public void paint(Graphics g) { if(offscreen == null) { offscreen = createImage(getSize().width, getSize().height); } Graphics og = offscreen.getGraphics(); og.setClip(0,0,getSize().width, getSize().height); super.paint(og); g.drawImage(offscreen, 0, 0, null); og.dispose(); }
- Men hvad skal jeg ændre størrelsen på og hvordan? De forsøg, jeg har gjort indtil videre, ændrer godt nok størrelsen på billedet, men skærer alt ud over de 720 pixels væk...
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Du kan prøve at lave en affin transformation så at det store billede bliver skaleret når du tegner med g (ikke og). AffineTransform at = new AffineTransform(); at.scale(720.0/1024.0,576.0/576.0); g.setTransform( at ); PS Du skal lige caste til Graphics2D objekter for at det virker.
Jeg kan løse det ved at kalde en repaint() i slutningen af paint(), men det er nok ikke ligefrem den smarteste løsning... :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.