Je ne sais pas d'une façon de le faire avant qu'il ait été affiché, mais une fois qu'il est à l'écran, vous pouvez utiliser une approche comme celle-ci:
private Image GetControlThumb(Control control, int thumbSize)
{
Bitmap imgLarge = new Bitmap(control.Bounds.Width, control.Bounds.Height);
using (Graphics g = Graphics.FromImage(imgLarge))
{
g.CopyFromScreen(
control.Parent.PointToScreen(new Point(control.Left, control.Top)),
new Point(0, 0),
new Size(control.Bounds.Width, control.Bounds.Height));
}
Size size;
if (control.Width > control.Height)
{
size = new Size(thumbSize, (int)(thumbSize * (float)control.Height/(float)control.Width));
}
else
{
size = new Size((int)(thumbSize * (float)control.Width/(float)control.Height), thumbSize);
}
Image imgSmall = imgLarge.GetThumbnailImage(size.Width, size.Height, new Image.GetThumbnailImageAbort(delegate { return false; }), IntPtr.Zero);
imgLarge.Dispose();
return imgSmall;
}
Vous pouvez l'utiliser pour obtenir un vignette de tout contrôle, comme celui-ci:
myPictureBox.Image = GetControlThumb(someControl, 100);
sur un bouton cliquez sur Je suis en mesure d'enregistrer l'image sur le disque, mais sur Laod de contrôle utilisateur je reçois une image blanche, puis-je utiliser la peinture() ... Je sais Ceci est appelé plusieurs fois sur un contrôle –
usercontrol quel est le but du bloc Using? –
La classe Graphics implémente IDisposable; le bloc using assure que la méthode Dispose est invoquée pour que l'objet Graphics puisse libérer des ressources. –