Масштабирование картинок

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

Масштабирование картинок

Сообщение Tarik » 12.04.2004 (Пн) 20:24

Здравcтвуйте, уважаемые! Пишу сейчас генератор html-альбомов (без особой надобности, так - размяться) и хочу сделать просмотр подготовленных картинок в виде миниатюр (типа как в Винде или ACDSee). Для этих целей использую такой код:
Код: Выделить всё
Dim iDiv As Single
imgCalc.Picture = LoadPicture(rpPath) 'rpPath - путь к файлу
If imgCalc.Width > imgCalc.Height Then
    iDiv = Round(imgCalc.Width / imgCalc.Height, 2) 'узнаём отношение сторон с точностью до 2 знаков после запятой
    imgImage(rpIndex).Height = imgImage(rpIndex).Width \ iDiv 'rpIndex - индекс Image'a в массиве. У imgImage включен Stretch.
Else
    iDiv = Round(imgCalc.Height / imgCalc.Width, 2)
    imgImage(rpIndex).Width = imgImage(rpIndex).Height \ iDiv
End If
    imgImage(rpIndex).Picture = imgCalc.Picture

Теперь разъясняю :) . Сначала я гружу искомую картинку в Image под названием imgCalc. Image после этого принимает размеры картинки. Потом я узнаю отношение сторон. Далее, в зависимости от того, что больше - ширина или высота, подгоняю соответсвующее свойство у imgImage, у которого включено св-во Stretch.
А теперь вопрос: можно сделать это всё более рационально, например, узнать размер искомой картинки не загружая её в Image (если мне не изменяет склероз, я даже где-то такую апишку видел... А может и не видел :? )
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.04.2004 (Вт) 12:46

Если в GetDIBits указатель на буфер поставить NULL, то она вернёт описание битмапа.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 14.04.2004 (Ср) 18:21

Блин, уведомления упорно продолжают не приходить :evil:

2GSerg: спасибо, щас попробую...
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 14

    TopList