Bonjour,
Je veux afficher une image dans un Canvas aves le code suivant:
Mon inexpérience en la matière ne me permet pas de comprendre pourquoi la client area est Rectangle{0,0,64,64}!
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 final Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new FillLayout()); Composite composite = new Composite(shell, SWT.BORDER); composite.setBackground(new Color(display, 255, 0, 0)); GridLayout layout = new GridLayout(2, false); composite.setLayout(layout); final Canvas canvas = new Canvas(composite, SWT.BORDER); canvas.setSize(32,32); final Image image = new Image(display, new ImageData("icons/ok.png")); canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { System.out.println(canvas.getClientArea()); e.gc.drawImage(image, 0, 0); } }); Label userIdLabel = new Label(composite, SWT.BORDER); userIdLabel.setText("&User id:"); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); }
Si j'affecte le Rectangle de l'image dans le canvas lors du paint par
Le Rectangle devient {0,0,28,28} alors que le rectangle de l'image est {0,0,32,32}!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 canvas.setBounds(image.getBounds());
Je pourrais toujours m'en sortir en faisant unmais ça me paraît quand même être de la bidouille!
Code : Sélectionner tout - Visualiser dans une fenêtre à part e.gc.drawImage(image, 0, 0);
Quelqu'un a une piste?
Merci
Partager