Bonjour,
Je suis tout nouveau en java et je d�bute l'interface SWT depuis une semaine, et notre formateur nous demande de pouvoir dessiner des cercles � la vol�e dans un composant Canvas afin de reproduire de fa�on tr�s tr�s modeste les principes d'un logiciel de type Paint.
En cours nous avons utilis� le plugin org.eclipse.swt.graphics.Rectangle pour tracer des rectangles mais je ne sais pas comment m'y prendre pour les cercles
Voici ce que nous avons fait en cours pour cr�er un rectangle :
Nous avons d�fini une classe abstraite avec les crit�res communs � toutes les formes, puis nous avons �tendu cette classe avec une classe rectangle. Ensuite, dans une classe Canvas, nous avons utilis� l'interface MouseListener et PaintListener pour pouvoir dessiner les rectangles � la souris. J'aurais voulu r�ussir � faire une classe Cercle qui reprenne la logique de ma classe rectangle. Jen e vois pas trop comment aborder le probl�me
La classe abstraite
La classe m�tier Rectangle
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 package paintrcp.biz; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; public abstract class Shape { private String name; private RGB border = new RGB(0,0,0); private RGB fill = new RGB(255,255,255); public Shape(String name, Point begin, Point end, RGB border, RGB fill) { setName(name); setBounds(begin, end); setBorder(border); setFill(fill); } public RGB getBorder() { return border; } public void setBorder(RGB border) { Colors.copy(this.border, border); } public RGB getFill() { return fill; } public void setFill(RGB fill) { Colors.copy(this.fill, fill); } public String getName() { return this.name; } public void setName(String name) { if(name.length()<2) { throw new IllegalArgumentException("Name must have at least 2 characters"); } this.name=name; } public void setBounds(Point begin, Point end) { if(begin==null || end==null) { throw new NullPointerException("begin and end cannot be null"); } if(begin.equals(end)) { throw new IllegalArgumentException("begin and end must be different"); } } public abstract void draw(GC gc); }
Merci pour votre aide
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package paintrcp.biz; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; public class Rectangle extends Shape { private org.eclipse.swt.graphics.Rectangle rect; public Rectangle(String name, Point begin, Point end, RGB border, RGB fill) { super(name, begin, end, border, fill); } @Override public void draw(GC gc) { gc.setBackground(new Color(gc.getDevice(), getFill())); gc.setForeground(new Color(gc.getDevice(), getBorder())); gc.fillRectangle(rect); gc.drawRectangle(rect); } @Override public void setBounds(Point begin, Point end) { super.setBounds(begin, end); rect = new org.eclipse.swt.graphics.Rectangle( Math.min(begin.x,end.x), Math.min(begin.y, end.y), Math.abs(begin. x-end.x), Math.abs(begin. y-end.y) ); } }
Partager