20. februar 2002 - 01:10Der 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å ?
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 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 :-)
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 ??
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.