et pour exporter l'image d'un controle ce code marche bien
private void ExportImage(Control control)
{
control.Refresh();//force le refresh pour que le popup menu ne soit plus affiché
Bitmap bmp = ImpressionEcran.CaptureControl(control);
string fichier = control.Text + ".png";
bmp.Save(fichier, ImageFormat.Png);
Process.Start(fichier);
}
avec impressionEcran définit comme suit
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace MesOutils
{
public static class ImpressionEcran
{
[DllImportAttribute("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest,
int nXDest,
int nYDest,
int nWidth,
int nHeight,
IntPtr hdcSrc,
int nXSrc,
int nYSrc,
int dwRop);
public static Bitmap CaptureControl(Control control)
{
Bitmap controlBmp;
using (Graphics g1 = control.CreateGraphics())
{
controlBmp = new Bitmap(control.Width, control.Height, g1);
using (Graphics g2 = Graphics.FromImage(controlBmp))
{
IntPtr dc1 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, control.Width, control.Height, dc1, 0, 0, 13369376);
g1.ReleaseHdc(dc1);
g2.ReleaseHdc(dc2);
}
}
return controlBmp;
}
}
}
Whismeril