Avatar billede ng-km Nybegynder
20. februar 2002 - 01:10 Der er 3 kommentarer og
1 løsning

Tegneprogram ?

Hvordan får man gemt de streger og cirkler man tegner på et Graphics-objekt. Jeg har lavet et lille tegneprogram, og kalder update() under mouseDragged()
så jeg kan se stregen (en lige streg) mens jeg tegner den. Når jeg tegner en ny streg, forsvinder den gamle fordi Canvas'en bliver opdateret. Hvordan gemmes den gamle streg/cirkel/tekst osv. så de er blivende på tegningen?
Er der en smart måde at lave et sådan simpelt tegneprogram på ?
Avatar billede logical Nybegynder
24. februar 2002 - 06:16 #1
Du gemmer dine tegninger i objekter, og tegner derfra:

private List elementer = new ArrayList();
..
public void addLine(int x, int y, int x2, int y2) {
  elementer.add(new Line(x,y,x2,y2));
}
...
public void paint(Graphics g) {
Object[] elementer = elementer.toArray();
for (int i = 0 ; i < elementer.length ; i++) {
  if (elementer[o] instanceof Line) {
    Line r = (Line) elementer[o];
    g.drawLine(r.x, r.y, r.x2, r.y2); // Or some other way :-)
  } else if (..whatever..) {
  } else if (.. cirkel..( {
  }
}
}

...

public void mouseReleased(MouseEvent e) {
if (dragged) {
  addLine(from_x, from_y, e.getX(), e.getY());
  dragged = false;
}
}

Sådan cirka ville jeg gøre det. Bare lidt kønnere :-)
Avatar billede ng-km Nybegynder
26. februar 2002 - 00:26 #2
Jeg har lavet tegneprogrammet med et array (med objekter), men når der er tegnet mange streger og indsat tekst, bliver det meget flimrende hver gang der tegnes nyt. Er der ikke mulighed for at "gemme" stregerne på graphics-objektet så man ikke skal gennemløbe arrayet hele tiden under en mouseDragged ??
Avatar billede logical Nybegynder
02. marts 2002 - 17:42 #3
Flimren skyldes noget andet, nemlig at du formodentlig ikke anvender double buffering, og lader default implementeringen cleare skærmen, og gentegne.

Bruger du et Canvas, så ha metoden:
public void update(Graphics g) {
  paint(g);
}

Så undgår du nemlig, at baggrunden bliver tegnet hvid hvergang og derved undgår du din flimren.
Avatar billede chazeftw Nybegynder
24. juli 2012 - 13:20 #4
Du kan finde lidt inspiration her:

www.tegneprogrammer.dk
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