Avatar billede cvpcvp Nybegynder
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?
Avatar billede _carsten Nybegynder
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;
Avatar billede cvpcvp Nybegynder
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!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester