как масштабировать картинку по размеру компонента image?

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

как масштабировать картинку по размеру компонента image?

Сообщение hecnfv » 25.05.2011 (Ср) 10:44

пытаюсь сделать графический просмотрщик фотографий,Картинка должна масштабироваться по размеру компонента Image, который занимает всю форму и изменяет размеры при изменении размеров формы,как это сделать?

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

Re: как масштабировать картинку по размеру компонента image?

Сообщение alibek » 25.05.2011 (Ср) 11:04

1. Определяешь размеры изображения (в пикселах).
2. Определяешь пропорции изображения (отношение ширины к высоте).
3. Определяешь максимально доступный размер канвы (в пикселах).
4. Определяешь пропорции канвы (отношение ширины к высоте).
5. В зависимости от сравнения пропорций изображения и канвы, определяешь масштабирующий коэффициент (отношение ширины (высоты) изображения к ширине (высоте) канвы).
6. Вычисляешь размеры бокса, в который будет вписано масштабированное изображение (умноженное на масштабирующий коэффициент).
7. Задаешь размеры Image, равные размеру бокса, и центруешь по канве.
Lasciate ogni speranza, voi ch'entrate.

hecnfv
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 18.05.2011 (Ср) 11:21

Re: как масштабировать картинку по размеру компонента image?

Сообщение hecnfv » 25.05.2011 (Ср) 11:12

alibek писал(а):1. Определяешь размеры изображения (в пикселах).
2. Определяешь пропорции изображения (отношение ширины к высоте).
3. Определяешь максимально доступный размер канвы (в пикселах).
4. Определяешь пропорции канвы (отношение ширины к высоте).
5. В зависимости от сравнения пропорций изображения и канвы, определяешь масштабирующий коэффициент (отношение ширины (высоты) изображения к ширине (высоте) канвы).
6. Вычисляешь размеры бокса, в который будет вписано масштабированное изображение (умноженное на масштабирующий коэффициент).
7. Задаешь размеры Image, равные размеру бокса, и центруешь по канве.

неужели все так сложно?

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

Re: как масштабировать картинку по размеру компонента image?

Сообщение alibek » 25.05.2011 (Ср) 11:36

Это очень просто.
Lasciate ogni speranza, voi ch'entrate.

hecnfv
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 18.05.2011 (Ср) 11:21

Re: как масштабировать картинку по размеру компонента image?

Сообщение hecnfv » 25.05.2011 (Ср) 11:40

мало что понял,но в общем то спасибо))

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

Re: как масштабировать картинку по размеру компонента image?

Сообщение Хакер » 25.05.2011 (Ср) 12:07

hecnfv писал(а):мало что понял,но в общем то спасибо))

Элементарная арифметика:
Код: Выделить всё
if ow/oh > iw/ih Then
    ih = ih * (ow/iw)
    iw = ow
Else
   iw = iw * (oh/ih)
   ih = oh
End If


ow, oh — ширина и высота контейнера
iw, ih — ширина и высота содержимого
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: как масштабировать картинку по размеру компонента image?

Сообщение Mikle » 26.05.2011 (Чт) 19:11

Ну вы даёте... Достаточно написать:
Код: Выделить всё
Image1.Stretch = True

Или даже не написать, а задать это свойство в редакторе формы, и картинка будет масштабироваться под размер Image1.

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

Re: как масштабировать картинку по размеру компонента image?

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

Mikle писал(а):Ну вы даёте...

Это ты «даёшь». Stretch не сохраняет aspect ratio:

stretch.png
stretch.png (78.35 Кб) Просмотров: 2240
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: как масштабировать картинку по размеру компонента image?

Сообщение Mikle » 26.05.2011 (Чт) 22:06

Автор чётко написал:
hecnfv писал(а):Картинка должна масштабироваться по размеру компонента Image, который занимает всю форму и изменяет размеры при изменении размеров формы

"всю форму". Нигде не сказано, что важно сохранить пропорции, возможно автор сам учитывает это, меняя размер формы.

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

Re: как масштабировать картинку по размеру компонента image?

Сообщение Хакер » 26.05.2011 (Чт) 22:09

Mikle писал(а):"всю форму"

Потому что он думает, что Image сам будет делать подгонку картинки, не догадываясь, что это ему самому нужно подгонять размер Image.

Зато есть вот это:
hecnfv писал(а):пытаюсь сделать графический просмотрщик фотографий

Никто не делает просмотрщик фотографий, который не сохраняет соотношение сторон.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: как масштабировать картинку по размеру компонента image?

Сообщение Mikle » 26.05.2011 (Чт) 22:16

Хакер писал(а):Потому что он думает, что Image сам будет делать подгонку картинки

Вот именно. Автор спросил - я ответил, ПРАВИЛЬНО. Дальше автор увидит результат и задаст следующий правильный вопрос: "как сделать так, чтобы пропорции сохранялись?", а "не неужели все так сложно?".
Я навожу на понимание решения, это же твой метод :)

malor
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 17.01.2010 (Вс) 17:37

Re: как масштабировать картинку по размеру компонента image?

Сообщение malor » 20.08.2011 (Сб) 12:56

hecnfv, где итоговый код? :shock:

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Re: как масштабировать картинку по размеру компонента image?

Сообщение netdemon » 22.08.2011 (Пн) 17:14

malor писал(а):hecnfv, где итоговый код? :shock:



Юзай BitBlt . Win32API тебе в помощь. :D
Лишь разум потерянный бесповоротно мною. Наполнить может сердце мне тоской.
Нельзя обнять необъятное и впихнуть невпихуемое.


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 71

    TopList