Delphi. UniGUI. Простой способ пропорционального уменьшения картинки

Заблудился, что называется в 3 соснах. Долго отлаживал этот простой код и Аллилуйя теперь все работает как нужно. С одной стороны сказалась специфика UniGUI, с другой нюансы Delphi. Я уже писал код для уменьшения картинок в потоке, но там все только для VCL и может быть FireMonkey. В UniGUI же я столкнулся с тем, что не смог воспользоваться методом LoadFromFile для экземпляра класса TWIC, что ввело меня в ступор. Но слава Богу нашелся другой вариант.

В общем вот элегантное решение, на мой взгляд, на примере UniGUI фрэймворка, но оно же подойдет для VCL если TuniImage заменить на TImage

Способ №1 через GDI+

Способ универсальный – уменьшает пропорционально картинку по настоящему, после чего ее можно сохранить на диск. Второй же способ, который будет приведен ниже уменьшает картинку только на уровне uniimage, а если копнуть глубже, Uniimage.picture.width, например, то этот параметр останется неизменным. Поэтому, я остановился на 1 способе.

Собственно уменьшение картинки

Пример использования

 

Способ №2 через uniimage.assign

Подойдет, если не нужно сохранять уменьшенную картинку на диск, а скажем просто загрузить её в uniimage на форме.

Пример использования кода…

здесь uniimage создаем в коде динамически, а uniimage1 просто добавлен на форму

 

 

This entry was posted in Delphi, UniGui. Bookmark the permalink.

Leave a Reply