16. marts 2004 - 09:13
Der er
1 kommentar og 1 løsning
Billedbehandling SWT doublebuffering
Jeg har et problem med at det billede jeg sætter ind i min applikation blinker når jeg gentegner canvaset. private ImageData grafenData; private Image grafen; final Display disp = composite.getDisplay(); grafenData = new ImageData("c:\\temp\\speedo4_2.png"); grafen = new Image(disp,grafenData); canvas.addPaintListener(new PaintListener() { public void paintControl(PaintEvent e) { if (!isKilled) { grafen = new Image(disp,grafenData); Rectangle temp = grafen.getBounds(); canvas.setBounds(grafxpos,grafypos,temp.width,temp.height); e.gc.drawImage(grafen,0,0); . . } canvas.addKeyListener(new KeyListener(){ public void keyPressed(KeyEvent evt) { if (evt.character == 'e') { System.out.println("trykket på e"); valueOfGraf += 0.1; canvas.redraw(); } } Er der en måde at lave en form for doublebuffering eller noget lignende så det ikke er synlig for brugeren at billedet bliver tegnet på ny?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
16. marts 2004 - 09:58
#1
Du kan gøre det på følgende måde I eksemplet her er 'offscreen' det image du tegner på if(offscreen == null){ offscreen = (java.awt.image.BufferedImage)createImage(this.getWidth(), this.getHeight()); g2d = offscreen.createGraphics(); } // Tegner på det image som ikke kan ses g2d.drawLine(mouseX, mouseY, mouseX1, mouseY1); // Overfører image til skærm g.drawImage(offscreen,0,0,this); private java.awt.image.BufferedImage offscreen = null, private java.awt.Graphics2D g2d; private java.awt.Graphics g;
16. marts 2004 - 15:25
#2
Det var ikke helt den ovenstående løsning jeg brugte da jeg har lavet det da det er et plugin til eclipse, men jeg fik da nogle hints til hvordan jeg skulle gribe det an. Så lidt point til dig!
Kurser inden for grundlæggende programmering