Исходный проект (Mattias Gaertner) содержится в папке Lazarus/examples (папка jpeg). Здесь представлена немного переработанная версия.
Программа просматривает графические файлы стандартных форматов (*.bmp;*.xpm;*.png;*.pbm;*.pgm;*.ppm;*.ico;*.icns; ‘*.cur;*.jpg;*.jpeg;*.jpe;*.jfif) (но не gif) а также сохранять картинки, преобразуя в формат jpeg.
При просмотре возможно масштабирование.
Текст главного модуля
Распакуйте архив в папку и откройте jpeg2.lpi – для работы с проектом
Проект должен открыться (если установлен Лазарус).
Или запустите jpeg2.exe (если потребует что-нибудь, сообщите, пожалуйста )
Бесплатная среда по разработке программного обеспечения
Всем доброго времени суток!
Сегодня мы продолжаем изучать работу с программированием по Лазарус. Сегодняшней нашей задачей будет изучением двух компонентов по работе с картинками. Первый компонент — image, с его помощью будет создаваться область куда можно будет загружать картинку. Второй компонент — imagelist, то есть коллекция картинок. Итак давайте разберемся более подробно с этими компонентами.
Как мы уже говорили первый компонент — image, облако туда можно загружать выбранную вами картинку . Скачиваете картинку себе на компьютер, затем нажимаете Picture и укажите путь где находится картинка. Что бы выбрать размер необходимой картинки существует функция Autosize — это позволит вам подбирать необходимый размер. Так же вы можете использовать картинку как кнопку для вашего приложения. Таким образом получится оригинальная и необычная кнопка. Если желаете вы можете загрузить картинку и программным путем. Как это сделать смотрите в видео ниже
Похожие новости:
One thought on “ Уроки программирования в Lazarus. Урок №12 ”
А тут показує 14 відео урок.К коментарію на 14 відео.
TCalendarDialog
TCalendarDialog – диалог выбора даты. В диалоге пользователь может выбрать дату, которую затем можно будет вставить прямо в текст.
Как и обычный календарь, этот диалог имеет свойство Date , которое содержит выбранную пользователем дату в формате TDateTime . Свойство Name диалога предлагаю переименовать в DD ( Date Dialog ), поскольку CD на форме уже есть, это диалог выбора цвета. Нам потребуется кнопка bDate с надписью Дата в Caption . Код обработчика кнопки следующий:
Не нужно объяснять, что тут мы вставляем в конец текста дату, предварительно преобразовав ее из TDateTime в String ?
TCalculatorDialog
TCalculatorDialog – диалог-калькулятор. Очень полезен, особенно в бухгалтерских программах. Позволяет пользователю вывести калькулятор, сделать необходимые расчеты, и результат вставить в текст:
У компонента есть свойство Value , которое имеет тип Double , то есть, выводит результат в виде вещественного числа. Переименуйте диалог в CalcD (так как CD уже есть). Для реализации диалога нам также потребуется кнопка bCalc с надписью Считать в Caption . Код кнопки:
Обратите внимание, диалог считается состоявшимся, если пользователь по окончании расчетов нажал на кнопку с "галочкой":
Только в этом случае событие Execute вернет True , и код выполнится, вставив результат вычислений в текст. Если же пользователь закроет диалог кнопкой с крестиком, клавишами или как-то иначе, то диалог не будет выполнен, и результат потеряется.
В результате всех наших действий, наш редактор должен выглядеть и работать примерно так:
На этом данный проект можете закрыть, он нам больше не понадобится.
Компонент TImage и диалоги TOpenPictureDialog, TSavePictureDialog
Последний раздел лекции посвятим работе с графикой, у Lazarus есть и такая возможность. Чтобы не портить наши предыдущие достижения, откроем Lazarus с новым проектом. Как обычно, главную форму назовем fMain, сохраним проект в папку 15-01 под именем MyImageBrowser, а модуль главной формы назовем Main . Сделаем следующие настройки свойств у главной формы:
На вкладке Additional Палитры компонентов найдите компонент TImage :
Установите его на форму. Компонент TImage является контейнером для показа изображений – графических файлов. Сам компонент по умолчанию имеет такой же цвет, как форма, а его границы обозначены пунктирной линией. TImage позволяет загружать графические файлы как на этапе проектирования, так и в процессе работы программы. В первом случае изображение считывается, и в дальнейшем становится частью проекта, его ресурсом. Во втором случае изображение не становится частью проекта, оно занимает память с момента его открытия пользователем, и до закрытия программы, либо пока пользователь не загрузит другое изображение. Мы опробуем оба варианта, но для начала настроим положение и размеры компонента. Имя оставим по умолчанию – Image1 . Обратим внимание на свойства компонента в Инспекторе объектов.
AutoSize | – автоматический размер. Если равно True , компонент TImage будет подгонять свой размер под реальный размер изображения. |
Center | – при значении True выводит изображение по центру компонента. |
Picture | – основное свойство, имеет специальный тип TPicture и содержит само изображение. С помощью этого свойства можно загрузить изображение из файла в компонент и во время проектирования, и во время выполнения программы. Можно также сохранить изображение в файл, хотя это имеет смысл только для графических редакторов, позволяющих создавать и изменять изображения. |
Proportional | – при значении True изображение будет изменять размеры, сохраняя пропорции изображения – отношение высоты к ширине. Если значение False , то при изменении размеров изображение может быть искажено: чрезмерно вытянуто в длину или в ширину. |
Stretch | – при значении True размер изображения будет подстраиваться под размер TImage . Обычно либо картинку подгоняют под размер контейнера, либо контейнер под размер картинки. В первом случае True будет у свойства AutoSize , во втором – у Stretch . |
Transparent | – прозрачность. Действует только на битовые матрицы, на файлы с форматом bmp. Применяется, когда нужно спрятать фоновый цвет рисунка. Допустим, в редакторе Paint вы на белом фоне нарисовали синий круг. Сохранили в bmp-файл, который затем загрузили в TImage . Так вот, если Transparent = False , то вы получите картинку, как есть – синий круг в белом прямоугольном фоне. Если же Transparent = True , то фоновый цвет будет заменяться на цвет компонента под TImage , то есть, станет прозрачным. Фоновым считается цвет самого нижнего левого пиксела – если он белый, то этот цвет отображаться не будет. |
Нужными нам методами обладает сложное свойство Picture , которое само является объектом. Подобно массивам строк, свойство Picture имеет такие методы, как LoadFromFile и SaveToFile , хотя последний метод применяется в основном, в графических редакторах.
Установим следующие свойства компонента Image1 :
Остальные свойства изменять не будем. Попробуем загрузить картинку. Выделите свойство Picture и щелкните по кнопке "…" справа от него. Откроется диалог загрузки изображений. Нажав кнопку "Загрузить", вы откроете стандартный диалог "Открыть файл изображений". Здесь вы можете выбрать желаемый файл , просматривая в правой части диалога миниатюрное изображение файла. Выбрав нужный файл , нажмите кнопку "Открыть". Выбранный файл отобразится в Диалоге загрузки изображений, после чего нажмите кнопку "ОК". Выбранное изображение попадет в TImage , причем будет отображено по центру контейнера, сохранит пропорции и подгонит свой размер под размеры контейнера.
Однако нам не нужен фон для формы, нам нужна программа для просмотра различных изображений, а такая программа загружает картинки по требованию пользователя. Поэтому удалим изображение. Для этого снова выделите Picture и откройте Диалог загрузки изображений. Там нажмите на кнопку "Очистить", после чего нажмите на "ОК". Диалог закроется, контейнер Image1 снова будет пуст.
Теперь нам нужен диалог открытия графических файлов – TOpenPictureDialog , который находится на вкладке Dialogs Палитры компонентов:
Подобно другим диалогам, TOpenPictureDialog является невизуальным, его можно установить на любое место , например, прямо посреди Image1 . Свойств у него также немного, причем все нужные свойства уже заполнены. Откройте, например, Редактор фильтров в свойстве Filter , и посмотрите на то обилие графических форматов, с которыми вы можете работать! Однако имя диалога слишком длинное, так что переименуем его свойство Name на OPD .
Также внизу нам понадобится кнопка TButton, которой мы дадим имя bOpen , а в свойстве Caption напишем Загрузить изображение. Чтобы надпись поместилась на кнопке, установите её свойство Width равным 160, или просто растяните кнопку с помощью мыши или кнопкой со стрелкой вправо, удерживая нажатой кнопку .
Давайте воспользуемся примером предыдущего приложения, и подкорректируем свойство Anchors у контейнера и кнопки: Image1 "привяжите" ко всем сторонам формы, чтобы он мог менять размер вместе с формой, а кнопку "отвяжите" от верхней границы и "привяжите" к нижней.
Сгенерируйте событие OnClick для кнопки, его код:
Как видите, ничего сложного, работа диалога абсолютно похожа на работу других диалогов. Сохраните проект, запустите его, попробуйте загружать различные графические файлы и изменять размеры формы – размеры картинки также должны меняться, сохраняя пропорции:
Диалог TSavePictureDialog имеет те же свойства, что и TOpenPictureDialog и предназначен для сохранения изображения в файл . Наша программа только просматривает файлы, а не редактирует их, поэтому здесь надобности в TSavePictureDialog нет. Однако на следующей лекции мы все же используем его, чтобы сохранять файл с изображением под другим именем.
Помимо пройденных диалогов вкладка Dialogs содержит и другие, более специфичные диалоги. Например, диалоги поиска и замены текста, настройки принтера и печати. Однако все диалоги работают схожим образом, так что при необходимости, вы сможете самостоятельно разобраться с работой любого из этих диалогов.