Форум программистов, компьютерный форум, киберфорум
Наши страницы
mozgotron
Войти
Регистрация
Восстановить пароль
Оценить эту запись

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

Запись от mozgotron размещена 23.11.2019 в 23:41

Наконец-то сегодня до меня дошло, как можно без лишних алгоритмов масштабировать картинки с сохранением их пропорций под текущий размер пикчербокса в приложениях Windows Forms.
Блин! Даже не нужно запрашивать размеры контрола, картинки и высчитывать их проценты.
Просто грузим изображение в PictureBox и в зависимости от размеров изображения применяем один из двух режимов свойства SizeMode:

vb.net
1
2
3
4
5
6
PictureBox1.Image = Image.FromFile(selFilePath)
If PictureBox1.Image.Height > PictureBox1.Height Or PictureBox1.Image.Width > PictureBox1.Width Then
    PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
Else
    PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage
End If
___________________________________________________________________________
Результат работы данного кода на скриншотах (белая рамка — это граница пикчербокса):

Картинка, ширина и высота которой меньше ширины/высоты пикчербокса.
Нажмите на изображение для увеличения
Название: Скриншот 2019-11-23 22.51.19.png
Просмотров: 1802
Размер:	355.3 Кб
ID:	5715

Картинка, ширина которой больше ширины пикчербокса.
Нажмите на изображение для увеличения
Название: Скриншот 2019-11-23 22.54.09.png
Просмотров: 1952
Размер:	791.4 Кб
ID:	5716

Картинка, высота которой больше высоты пикчербокса.
Нажмите на изображение для увеличения
Название: Скриншот 2019-11-23 22.59.32.png
Просмотров: 1651
Размер:	1,001.4 Кб
ID:	5717

Все изображения полностью вписались в пикчербокс с сохранением своих пропорций (W/H).
Не исключаю, что на Киберфоруме кто-то уже предложил такое решение или даже получше.
Но иногда хочется самому пошевелить мозгами.
Просмотров 101 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.