.NET Winform - уменьшенное изображение usercontrol - PullRequest
0 голосов
/ 03 июня 2009

У меня есть приложение, которое использует некоторые пользовательские элементы управления. Я хочу взять миниатюрное изображение пользовательских элементов управления, когда они загружены для использования, и добавить их на панель разметки.

Где найти информацию о создании миниатюрного изображения пользовательского элемента управления при его загрузке?

1 Ответ

2 голосов
/ 03 июня 2009

Я не знаю, как это сделать до того, как он отобразится, но когда он появится на экране, вы можете использовать такой подход:

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;

}

Вы можете использовать его для получения эскиза любого элемента управления, например:

myPictureBox.Image = GetControlThumb(someControl, 100);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...