Image Sizing

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Went
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 103
Зарегистрирован: 01.09.2004 (Ср) 17:25
Откуда: Rostov-on-Don

Image Sizing

Сообщение Went » 15.08.2005 (Пн) 17:42

Как можно загрузить картинку измененного размера в Picture Box... то есть скажем, у меня есть Image Box, у которого свойство Stretch=True, я в него загружаю картинку, размеры которой не соответствуют размерам Image'а. При загрузке размеры естесственно изменяются. Так вот при попытке загрузить ее в Picture размеры возвращаются к исходным... как сделать так, чтобы не возвращались? Короче, мне нужно изменять размеры картинки и сохранять эти изменения.
Не все ОПЕРАТОРЫ одинаково хороши

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 15.08.2005 (Пн) 18:27

paintpicture ....
picture1.picture=picture1.image

Went
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 103
Зарегистрирован: 01.09.2004 (Ср) 17:25
Откуда: Rostov-on-Don

Image Sizing

Сообщение Went » 15.08.2005 (Пн) 21:13

Не-е, от так просто обрезает картинку без изменения ее размера... точнее пропорций.
Не все ОПЕРАТОРЫ одинаково хороши

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 15.08.2005 (Пн) 21:30

Если всё сделать _правильно_, то результат будет соответствовать ожиданиям. Код в студию.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 16.08.2005 (Вт) 14:08

PaintPicture. Почитай внимательно описание. С его помощью как раз и можно (нужно) делать ресайзинг картинок.
То, что для одних константа, для других только переменная...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 16.08.2005 (Вт) 23:02

Код: Выделить всё
Dim CANVAS As IPictureDisp
Private Sub Form_load()
ScaleMode = vbPixels
Me.AutoRedraw = True
Set CANVAS = LoadPicture("C:\WINDOWS\На рыбалку.bmp")
End Sub
Private Sub Form_Resize()
CANVAS.Render hDC, 0, ScaleHeight, ScaleWidth, -ScaleHeight, 0, 0, CANVAS.Width, CANVAS.Height, 0
Refresh
End Sub


К сожалению рассчёт пропорций сделать не успел, но вот ресайзинг картинки тебе поможет. Остальное считается через коэффициент соотношения.
Последний раз редактировалось ALX_2002 17.08.2005 (Ср) 0:13, всего редактировалось 1 раз.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 17.08.2005 (Ср) 0:15

Есть способ проще. Одна строка кода:

Код: Выделить всё
Picture2.PaintPicture Picture1.Picture, 1, 1, 50, 50, 1, 1, 100, 100, vbSrcCopy


Пример прилагается.
Вложения
Resize.zip
(24.8 Кб) Скачиваний: 23
То, что для одних константа, для других только переменная...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 17.08.2005 (Ср) 0:34

Odrick писал(а):Есть способ проще. Одна строка кода:

Код: Выделить всё
Picture2.PaintPicture Picture1.Picture, 1, 1, 50, 50, 1, 1, 100, 100, vbSrcCopy


Пример прилагается.


Конечно проще ! :D, если считать, что картинка уже загружена, и ещё считать, что при растягивании элемента, её растягивать не надо, и ещё считать, что перерисовывать её не надо... и ещё... и т.п :D :D

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 17.08.2005 (Ср) 2:30

ALX_2002 писал(а):Конечно проще ! :D, если считать, что картинка уже загружена,

кто мешает ее загрузить? ;)
ALX_2002 писал(а):и ещё считать, что при растягивании элемента, её растягивать не надо,

по-моему такой задачи в вопросе и не ставилось.
ALX_2002 писал(а):и ещё считать, что перерисовывать её не надо... и ещё... и т.п :D :D

Autoredraw никто еще не отменял ;)
ИМХО не нужно изобретать себе лишние проблемы, если можно воспользоваться готовыми решениями.
То, что для одних константа, для других только переменная...


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

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

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

    TopList