Salut,
Depuis mon application j ai un bouton qui me permet de créer de la documentation et des captures d écrans des pages créers
Le problème que j ai est lorsque je dois faire une capture d écran d une seule des figures de l écran (et de ces enfants) j obtiens une belle image blanche
voici mon code de création de l image :
si quelqu un aurait une piste je le remercie d avance
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
58
59
60
61 /** * Create an image for a gived figure and a specified format * * @param figure * the Figure to create an image for. * @param format * one of SWT.IMAGE_BMP, SWT.IMAGE_GIF * , SWT.IMAGE_JPEG, or SWT.IMAGE_PNG * @return byte [] returns an array of bytes that include the image */ private static byte[] createImage(IFigure figure, int format) { Device device = Display.getDefault(); ConditionalBodyFigure conditionFigure = (ConditionalBodyFigure) figure; HorizontalLayout layout = new HorizontalLayout(conditionFigure.getFigureContext()); conditionFigure.setLayoutManager(layout); conditionFigure.setVisible(true); layout.layout(conditionFigure); Rectangle r = conditionFigure.getBounds(); ByteArrayOutputStream result = new ByteArrayOutputStream(); Image image = null; GC gc = null; Graphics g = null; try { image = new Image(device,500,500); gc = new GC(image); g = new SWTGraphics(gc); g.translate(r.x * -1, r.y * -1); figure.paint(g); ImageLoader loader = new ImageLoader(); loader.data = new ImageData[1]; ImageData imageData = image.getImageData(); /* If the image depth is 8 bits or less, then we can use the existing image data. */ if (imageData.depth <= 8) { loader.data[0] = imageData; }else { /* get an 8 bit imageData for the image */ ImageData newImageData = CreateImageAction.get8BitPaletteImageData(imageData); loader.data[0] = newImageData; } loader.save(result, format); } catch (Exception e) { e.printStackTrace(); } finally { if (g != null) { g.dispose(); } if (gc != null) { gc.dispose(); } if (image != null) { image.dispose(); } } return result.toByteArray(); }
Partager