Страница: 1 |
Страница: 1 |
Вопрос: Превьюшка (bitmap) из заполненого UserControl
Добавлено: 05.02.12 10:25
Автор вопроса: Миха
Привет.
Суть вопроса вот в чем:
Есть UserControl с чекбоксами и заполнеными текстбоксами.
Необходимо получить с него bitmap, причем сам UserControl еще не где на мониторе графически не отображен, т.е. находится в памяти. Т.е. нужно сделать что то вроде превьшки.
метод me.DrawToBitmap возращает bitmap на котором находится голый контейнер UserControl без чекбоксов и текстбоксов.
GDI+ тоже никак не может помочь, т.к. он захватывает уже часть готового экрана методом Graphics.CopyFromScreen, а у меня еще ничего на мониторе нет.
Подскажите люди добрые как быть?
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа:
Миха
Вопросов: 2
Ответов: 1
Профиль | | #1
Добавлено: 06.02.12 20:03
Ну что же отвечу сам себе, не знаю на сколько элегантно, но может кому пригодится:
''' <summary>
''' Функция получения превьюшки с пользовательского контрола
''' </summary>
''' <param name="MyUserControl"></param>
''' <returns></returns>
''' <remarks></remarks>
Private Function GetPreViewFromUserControl(ByVal MyUserControl As System.Windows.Forms.Control) As Bitmap
'Создаем базовый рисунок с контрола
 im bitmapMyUC As Bitmap = New System.Drawing.Bitmap(MyUserControl.Width, MyUserControl.Height)
MyUserControl.DrawToBitmap(bitmapMyUC, New Rectangle(0, 0, bitmapMyUC.Width, bitmapMyUC.Height))
'Ассоциируем базовый рисунок с обектом для отрисовки
 im graph As Graphics = Graphics.FromImage(bitmapMyUC)
'Перебираем коллекцию контролов на котроле
 im oControl As Windows.Forms.Control
For Each oControl In MyUserControl.Controls
 im Bitmap As Bitmap = New System.Drawing.Bitmap(oControl.Width, oControl.Height)
oControl.DrawToBitmap(Bitmap, New Rectangle(0, 0, oControl.Width, oControl.Height))
graph.DrawImage(Bitmap, New Point(oControl.Location.X, oControl.Location.Y))
Bitmap = Nothing
Next
'Возращаем готовый рисунок
Return bitmapMyUC
End Function