Сохранить в BMP

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

Сохранить в BMP

Сообщение Debugger » 23.08.2006 (Ср) 20:43

Есть некий Image. В нём картинка. Я рисую на этой картинке Line' ами и пр. Как сохранить ИЗМЕНЁННУЮ КАРТИНКУ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.08.2006 (Ср) 20:56

SavePicture(Image, FileName)
Изображение

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 24.08.2006 (Чт) 9:12

Ага, я такой тупой??? Нет? этот метод НЕ СОХРАНЯЕТ LINE'ОВ И ПР.. Он сохраняет исходную картинку!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2006 (Чт) 9:16

Вместо кипятиться, передавай в SavePicture свойство Image.
Ты, не иначе, передаёшь Picture.
Изображение

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 24.08.2006 (Чт) 9:25

Гении не вывелись.
Не работает.
Можно примерчик?

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

Re: Сохранить в BMP

Сообщение alibek » 24.08.2006 (Чт) 9:36

Debugger писал(а):Есть некий Image. В нём картинка. Я рисую на этой картинке Line' ами и пр. Как сохранить ИЗМЕНЁННУЮ КАРТИНКУ?

Если бы было понимание, что ты НЕ РИСУЕШЬ на этой картинке, а РАЗМЕЩАЕШЬ ПОВЕРХ НЕЕ другие элементы управления, вопроса бы не было.
Либо вместо Image используй PictureBox и РИСУЙ линии на ней, либо с помощью BitBlt снимай растр с формы, с фрагмента, совпадающего с Image.
Lasciate ogni speranza, voi ch'entrate.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 24.08.2006 (Чт) 9:40

Какие элементы управления?
Что, код
Код: Выделить всё

img.Line(0,0)-(100,100)

рисует поверх?
(я самоучка и задаю вопрорсы...)



А кто-нибудь скажет, как пользоваться itBlt?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2006 (Чт) 9:42

Debugger писал(а):Можно примерчик?

Да на удовольствие.
Вложения
scribble4ya.rar
(1.57 Кб) Скачиваний: 45
Изображение

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

Сообщение alibek » 24.08.2006 (Чт) 9:45

Debugger, значит это у тебя не Image.
Lasciate ogni speranza, voi ch'entrate.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 24.08.2006 (Чт) 9:48

Спасибо! Кажись, работает... И с PictureBox работает.. Токо AutoRedraw зачем-то надо в True

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2006 (Чт) 9:50

Видишь, зря кипятился.
Изображение

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 24.08.2006 (Чт) 11:16

Не, чайника не было. Ремонт :-(

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 26.09.2006 (Вт) 15:10

Очень подходящее название темы, так что даже новую создавать не хочется...
У меня аналогичная проблема, но у меня именно - line'ы на форме, т.е элементы управления и это как раз про меня:
Код: Выделить всё
Если бы было понимание, что ты НЕ РИСУЕШЬ на этой картинке, а РАЗМЕЩАЕШЬ ПОВЕРХ НЕЕ другие элементы управления, вопроса бы не было.
Либо вместо Image используй PictureBox и РИСУЙ линии на ней, либо с помощью BitBlt снимай растр с формы, с фрагмента, совпадающего с Image.
Я использую savepicture picturebox1.Image, FileName - не работает
Подскажите пожалста, как рисовать "рисовать линии на ней"?
Заранее спасибо!
Человек рождён для того, чтобы достичь жизни...

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

Сообщение alibek » 26.09.2006 (Вт) 15:19

PictureBox1.Line ...
Lasciate ogni speranza, voi ch'entrate.

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 26.09.2006 (Вт) 16:02

Еще вопрос, который я давно хотел задать. Для чего нужно свойство AutoRedraw?
Подпись находится в стадии разработки...

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

Сообщение alibek » 26.09.2006 (Вт) 16:12

Чтобы не обновлять изображение вручную. Когда AutoRedraw=True, все изменения, вносимые в картинку, автоматически дублируются в буфере. И при необходимости восстанавливаются из него, когда надо перерисовать DC.
Lasciate ogni speranza, voi ch'entrate.

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 26.09.2006 (Вт) 16:29

PictureBox1.Line ...
Он пишет, что аргнумент не оптимальный. И выделяет line
Человек рождён для того, чтобы достичь жизни...

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

Сообщение alibek » 26.09.2006 (Вт) 16:47

Ну разумеется, это был не готовый код, а направление.
Открой справку, там описано, какие аргументы должны быть у метода, и сколько их. Ну и описан смысл каждого аргумента. Простейший вариант: .Line (0,0)-(100,100),0
Lasciate ogni speranza, voi ch'entrate.

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 26.09.2006 (Вт) 21:59

Ну alibek, я ж писал:
У меня аналогичная проблема, но у меня именно - line'ы на форме, т.е элементы управления и это как раз про меня:
Причем тут line(0,0)? :) ... У меня именно line-контролы.
Что касается line(0,...)... так здесь - и picture1.image сохраняет, которую в этом вопросе до меня уже раскрутили
Последний раз редактировалось VB-constructor 26.09.2006 (Вт) 22:04, всего редактировалось 1 раз.
Человек рождён для того, чтобы достичь жизни...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 26.09.2006 (Вт) 22:02

Vb-Constructor писал(а):Подскажите пожалста, как рисовать "рисовать линии на ней"?

Собсно Алибек и дал ответ на твой вопрос. М?
Если всё делать своими ручками, они скоро отвалятся !

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 26.09.2006 (Вт) 22:08

Собсно Алибек и дал ответ на твой вопрос. М?
Ребят, я не понимаю, вы что путаете

Line-контрол - это элемент управления.
line-метод - это графический метод, который только рисует.
Мне не нужен метод, а нужно, чтобы был виднен на bmp элемент управления LIne

Я ясно выразился?
Человек рождён для того, чтобы достичь жизни...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 26.09.2006 (Вт) 22:17

Тише, тише. Так катит?
Код: Выделить всё
Private Declare Function BitBlt Lib "gdi32.dll" ( _
     ByVal hDestDC As Long, _
     ByVal x As Long, _
     ByVal y As Long, _
     ByVal nWidth As Long, _
     ByVal nHeight As Long, _
     ByVal hSrcDC As Long, _
     ByVal xSrc As Long, _
     ByVal ySrc As Long, _
     ByVal dwRop As Long) As Long




Private Sub Command1_Click()
BitBlt Picture2.hDC, 0, 0, 500, 300, Me.hDC, 0, 0, vbSrcCopy
Picture2.Refresh
SavePicture Picture2.Image, "C:\12345.bmp"
End Sub

Private Sub Form_Load()
Picture2.AutoRedraw = True
Picture2.Visible = False

End Sub
Если всё делать своими ручками, они скоро отвалятся !

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 26.09.2006 (Вт) 22:35

Тише, тише. Так катит?
Да, катит, спасибо!

P.S Извини за шум
Человек рождён для того, чтобы достичь жизни...

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 26.09.2006 (Вт) 22:42

А рисовать поверх рисунка Line-контролами всё таки нельзя?

Я по-видимому alibeka не так понял: он наверно подразумевал, что для каждого элемента line соответствует метод line, который переносит изображение на picture типа line(line1.x1,line1.y1)-(line1.x2,line1.y2)? Так, alibek?

Я понял, что пытаешься объяснить, как можно сохранить другим способом savepicture(picture1.line, путь) вместо picture1.image. Правда абсурд? :)
Человек рождён для того, чтобы достичь жизни...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 26.09.2006 (Вт) 23:17

VB-constructor
Ты спросил как рисовать линиями. Линии- это такая штука, которая рисуется именно методом Line =). А то что хочешь ты- так кидаешь на пикчербокс контрол линия и изменяешь его св-ва X1,Y1,X2,Y2 =)
Если всё делать своими ручками, они скоро отвалятся !

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 27.09.2006 (Ср) 15:20

Возможно - выход - пройтись по всем контролам, найту, у которых Parent = Ваш Пиктюр Бокс и которые TypeOf Line , тогда порисовываем через X1,Y1,X2,Y2 линию на вышеп п-боксе и сохраняем?
Вроде, объяснил правильно, но косо.


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

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

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

    TopList