Bonjour à tous,
Dans le cadre d'une application graphique similaire à Photoshop je me pose quelques questions :
J'ai une class Image qui est un JPanel pour lequel je place une image dans ce JPanel.
Lors de la méthode Paint() je fais appel à une méthode d'une autre classe SelectionModule : DrawRectangle.
L'idée est de tracer avec la souris un rectangle de sélection, comme dans photoshop.
Or, lors de l'évènement MouseDragged (en autre) je fais un Image.Repaint()
Ainsi je redessine l'image - et le rectangle.
Concrètement :
J'aimerai savoir si il n'existe pas une solution en couche qui permet de ne redessiner que le rectangle en question ... et par conséquent je ne touche pas à l'image (et le processus demande par conséquent moins de ressources)
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 public class ImagePanel extends JPanel { [...] public void paintComponent(Graphics g) { super.paintComponent(g); // Paint background if (image != null) { // Un image existe : On la dessine } parent.getZoneModule().drawRectangle(g); } [...] } public class SelectZoneModule extends Module implements ... { ImagePanel Image; [...] public void mouseDragged(MouseEvent e) { // Dessiner le rectangle Image.repaint(); // Redessine le panel } [...] public void drawRectangle(Graphics g) { // Dessiner le rectangle } [...] }
D'autres part - et rien avoir avec le graphique, n'est-il pas possible d'obtenir la taille d'une image JPG sans le chargement de cette image.
La machine virtuelle n'alloue pas beaucoup d'image et j'aimerai pouvoir intercepter l'erreur OutOfMemory (ainsi j'aurais une méthode qui irait lire la taille de l'image et comparerait avec l'espace libre en mémoire virtuelle...)








Répondre avec citation
Partager