Как записать рисунок на форме в файл?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
next
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 26.03.2002 (Вт) 23:01

Как записать рисунок на форме в файл?

Сообщение next » 18.10.2007 (Чт) 7:46

Все не так просто, как мне кажется. Мне нужно записать не данные .picture на форме в файл. Допустим я рисую линию на форме или же ряд точек с помощью pset. Как мне сохранить полученное на форме изображение в bmp файл? Я так понимаю это изображение непосредственно связано с hdc формы, а не .picture и если я сохраню picture, то получу пустой рисунок. Как это сделать?
Спасибо.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 18.10.2007 (Чт) 8:08

И этот вопрос пишется в раздел для профессионалов? Ужас! :twisted: В Поиск, разжевано, пережевано несколько сотен раз!!!!
Весь мир матрица, а мы в нем потоки байтов!

next
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 26.03.2002 (Вт) 23:01

Сообщение next » 18.10.2007 (Чт) 8:48

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 18.10.2007 (Чт) 10:43

tag_warning

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

О! Ещё +1 в пользу того, что ты не профессионал.

Тема переносится.
Последний раз редактировалось Хакер 18.10.2007 (Чт) 11:03, всего редактировалось 1 раз.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 18.10.2007 (Чт) 10:59

next, ну и как же ты искал? Какие слова пользовал? Что нашел?
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 18.10.2007 (Чт) 11:48

Ну а вообще,
SavePicture SomeThing.Image, "c:\test.bmp"
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

next
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 26.03.2002 (Вт) 23:01

Сообщение next » 18.10.2007 (Чт) 16:32

Хакер ты меня не совсем понял.
Ну допустим...

Код: Выделить всё
dim x, y as integer

for x = 0 to 1000
y = x * x
form1.pset x * 100, - y * 100
next x
x = x + 0.1


Допустим получил я параболу на форме. Как мне ее записать в bmp файл.
Пробую
Код: Выделить всё
SavePicture form1.picture, "c:\m.bmp"


получаю пустой файл или файл с задним рисунком формы.
Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.10.2007 (Чт) 16:56

.Image, а не .Picture.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 18.10.2007 (Чт) 16:59

next
Как раз наоборот, ты меня совсем не понял.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 18.10.2007 (Чт) 18:25

next писал(а):
Код: Выделить всё
dim x, y as integer

for x = 0 to 1000
y = x * x
form1.pset x * 100, - y * 100
next x
x = x + 0.1

Забавный код! Прям таки иллюстрация к статье "Как не надо писать на VB"! Да и читать автор не умеет...
Весь мир матрица, а мы в нем потоки байтов!

next
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 26.03.2002 (Вт) 23:01

Сообщение next » 18.10.2007 (Чт) 19:21

Вот тьма народу подязвить находится. Моей целью не было написать точный код, а лишь показать что я хочу сделать.
Проблема была в следующем:

допустим нарисовали на форме прямую, к примеру:

Код: Выделить всё
form1.line(0,0)-(1000,1000), &H80000008&


теперь делаем:

Код: Выделить всё
SavePicture form1.image, "c:\mm.bmp"


все прекрасно рисуночек формы сохраняется, но без прямой... оказывается всего лишь form1.autoredraw = true и все будет отлично.
Это для тех кто будет искать ответ на этот вопрос.

Но возникает еще один. Простите господа программисты за возможную тупость, но сохраненный рисунок имеет размеры намного больше размеров формы. То же самое, если взять Picturebox и рисовать там, а затем сохранять. Как сохранить рисунок в размерах самого PictureBox? Спасибо.[/code]

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 18.10.2007 (Чт) 19:33

Если линяя стирается, то значит не "Теперь делаем", а делаем позже, через некоторое время, достаточное для того, чтобы линия стёрлась. А линия сотрётся если её не перерисовывать. А если перерисовывать, то не сотрётся. Но если не перерисовывать самому, а заставить VB перерисовывать, то тоже не сотрётся (к моменту сохранения). Это я к тому, что включение autoredraw - не панацея, а всего лишь обходной путь.
Последний раз редактировалось Хакер 19.10.2007 (Пт) 7:43, всего редактировалось 1 раз.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

next
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 26.03.2002 (Вт) 23:01

Сообщение next » 19.10.2007 (Пт) 7:10

Спасибо Хакер за разъяснение. Как же насчет вопроса с размерами изображения? Уж больно оно большое.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 100

    TopList