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 :

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();
	}
si quelqu un aurait une piste je le remercie d avance