TextBox > Bitmap

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

TextBox > Bitmap

Сообщение MIT » 20.01.2009 (Вт) 21:58

Как отрендерить невидимый текстбокс на картинку?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: TextBox > Bitmap

Сообщение Williams » 20.01.2009 (Вт) 23:01

MIT писал(а):Как отрендерить невидимый текстбокс на картинку?


Нарисовать, думаю, не составит труда)
И вы думаете, что вас оставят в живых после прочтения этого поста?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: TextBox > Bitmap

Сообщение MIT » 20.01.2009 (Вт) 23:14

Ну нарисуй.
Control.DrawToBitmap не пашет, ввиду
Использование метода DrawToBitmap имеет следующие ограничения:
  • Исключение ArgumentException может выдаваться для больших точечных рисунков. Максимально допустимый размер определяется особенностями компьютера.
  • Метод DrawToBitmap не поддерживает элементы управления Ink для операционных систем Windows XP Tablet PC Edition 2005.
  • Метод DrawToBitmap не прорисовывает дочерний объект TextBox, если для свойства Visible объекта TextBox задано значение false.
  • Элементы управления внутри контейнеров прорисовываются в обратном порядке.
  • Метод DrawToBitmap обладает ограниченной функциональностью по отношению к объекту RichTextBox; с его помощью прорисовывается только граница точечного рисунка.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: TextBox > Bitmap

Сообщение Williams » 20.01.2009 (Вт) 23:19

Ты так делаешь? Контрол рисуется нормально

Код: Выделить всё
   Dim bmp As New Bitmap(TextBox1.Width, TextBox1.Height)
        TextBox1.DrawToBitmap(bmp, New Rectangle(0, 0, bmp.Width, bmp.Height))
        bmp.Save("C:\test.bmp")
И вы думаете, что вас оставят в живых после прочтения этого поста?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: TextBox > Bitmap

Сообщение MIT » 20.01.2009 (Вт) 23:25

MIT писал(а):Как отрендерить невидимый текстбокс на картинку?

MSDN писал(а):Метод DrawToBitmap не прорисовывает дочерний объект TextBox, если для свойства Visible объекта TextBox задано значение false.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: TextBox > Bitmap

Сообщение Williams » 20.01.2009 (Вт) 23:30

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

Кстати, как алтернативу можно предложить нарисовать "текстбокс" самому (его конструкция достаточно проста)
И вы думаете, что вас оставят в живых после прочтения этого поста?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: TextBox > Bitmap

Сообщение MIT » 20.01.2009 (Вт) 23:42

Пока есть только определенный мысли на счет дизайна. Хотелось бы реализовать крайне занятную анимацию, на подобие программы SpeedItUp, которая предпологает отрисовку контролов.

Можно и самому отрисовывать конечно, но может быть есть нормалый способ?

P.S.: как извращенный альтернативу можно юзать такой метод: создать текстбокс вне поля видимости (или перенести туда существующий, сделав видимым) со всеми настройками и отрендерить его, затем удалить/скрыть (и переместить, если надо)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: TextBox > Bitmap

Сообщение Ramzes » 21.01.2009 (Ср) 0:17

А отрисовать Textbox? который не лежит на форме?
Код: Выделить всё
textBox tb = new textBox();
tb.DrawToBitmap();

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: TextBox > Bitmap

Сообщение Metallikus » 21.01.2009 (Ср) 2:39

А что если использовать метод drawString() для прорисовки textbox.text в picturebox, а потом picturebox.DrawToBitmap()? Ведь picturebox можно сделать похожим на textbox, и шрифт в drawString() можно сделать таким же как и в textbox... И у тебя получится графически точная копия текстбокса. Правда ресурсов много жрать будет...

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: TextBox > Bitmap

Сообщение MIT » 21.01.2009 (Ср) 11:18

Ramzes писал(а):А отрисовать Textbox, который не лежит на форме?
Тоже мысль, но я все-же склоняюсь к идее выноса текстбокса за пределы видимости.
Metallikus писал(а):А что если использовать метод drawString() для прорисовки textbox.text в picturebox, а потом picturebox.DrawToBitmap()? Ведь picturebox можно сделать похожим на textbox, и шрифт в drawString() можно сделать таким же как и в textbox... И у тебя получится графически точная копия текстбокса. Правда ресурсов много жрать будет...

Нет, ресурсов-то не много, другое дело, что помимо шhифта стоит учитывать многие другие параметры, например, TextAlign, цвет, выделенный текст. И при чем тут picturebox категорически непонятно: если рисовать, то сразу на Bitmap, а рамку нарисует ControlPaint.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: TextBox > Bitmap

Сообщение MIT » 21.01.2009 (Ср) 16:58

Стоит отметить, что для рисования текстбокса все уже готово - класс TextBoxRenderer очень даже для этого и сделан.
А вот так можно нарисовать рамку:
Код: Выделить всё
                Dim rect As New Rectangle(0, 0, (TextBox.Size.Width - 1), (TextBox.Size.Height - 1))
                graphics.DrawRectangle(New Pen(VisualStyleInformation.TextControlBorder), rect)
                rect.Inflate(-1, -1)
                graphics.DrawRectangle(SystemPens.Window, rect)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

    TopList