2009-06-03 8 views
0

J'ai une application qui utilise quelques commandes usercontrol. Je veux prendre une image miniature des commandes utilisateur quand elles sont chargées pour l'utilisation et les ajouter à un panneau flowlayout..NET Winform - thumbnail of usercontrol

Où puis-je trouver des informations sur la création d'une image miniature d'un contrôle utilisateur lorsqu'il est chargé?

Répondre

2

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); 
+0

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 –

+0

usercontrol quel est le but du bloc Using? –

+0

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. –

Questions connexes