§ 13. Элементы управления для работы с графикой
Сайт: | Профильное обучение |
Курс: | Информатика. 11 класс (Повышенный уровень) |
Книга: | § 13. Элементы управления для работы с графикой |
Напечатано:: | Гость |
Дата: | Пятница, 3 Май 2024, 11:49 |
13.1. Элемент управления для вставки рисунка (Image)
При создании приложений нередко возникает необходимость украсить его графическим изображением. В этом случае можно воспользоваться компонентом Image (изображение). На панели компонентов Additional компонент изображение представлен в виде , имя объекта — Image. Компонент Image, помещенный на форму, получает имя ImageN, где N — номер 1, 2, 3… (пример 13.1). Некоторые свойства компонента Image приведены в таблице (пример 13.2). Используя свойство Picture, можно выбрать и загрузить изображение на этапе проектирования приложения. Изображение может быть выбрано в окне редактора изображений (кнопка около свойства Picture в окне инспектора объектов). В этом случае рисунок сохраняется в файле формы и для работы приложения отдельного файла с рисунком не требуется. Компонент поддерживает вставку рисунков в форматах JPEG, PNG, BMP и др. Если требуется обработка изображения (любые изменения рисунка), то рисунок должен быть сохранен в формате BMP. Для рисунков формата PNG с прозрачным фоном при загрузке сохраняется прозрачность. Свойство Picture компонента Image обладает методами LoadFromFile и SaveToFile, которые используются для загрузки и сохранения изображения. Метод LoadFromFile может быт использован для загрузки изображения при открытии приложения. В этом случае файл с рисунком должен находиться в папке проекта (или нужно прописать полный путь к файлу). Пример 13.3. Создать проект, в котором следует разместить фоновое изображение на форме. При нажатии на кнопку поверх фонового изображения должно появиться другое изображение. Этапы выполнения задания
Написать обработчик события OnClick для компонента Button1.. |
Пример 13.1. Компонент Image (изображение) на форме: Пример 13.2. Некоторые свойства компонента Image (изображение).
Пример 13.3. Форма на этапе конструирования: Обработчик события OnClick для Button1.
Работающее приложение: До нажатия на кнопку: После нажатия на кнопку: Поскольку горизонтальное положение медведя задается случайным образом, то при каждом нажатии на кнопку, медведь будет прорисован в новом месте. |
13.2. Методы канвы
Некоторые компоненты в CBuilder, такие как форма, компонент Image и др., имеют свойство Canvas (канва, холст). Канва представляет собой область, на которой можно рисовать или выводить на нее растровые изображения. Система координат у канвы такая же, как и для любого компонента в CBuilder — точка с координатами (0, 0) расположена в верхнем левом углу, ось ОY направлена вниз. Каждая точка канвы имеет координаты X и Y. Координаты измеряются в пикселях. Важнейшее свойство пикселя — его цвет. Цвет пикселя канвы определяется значением свойства Pixels. Это свойство представляет собой двумерный массив, в котором хранится цвет каждого пикселя. Для задания цвета в CBuilder можно воспользоваться несколькими способами (пример 13.4). Числовые значения цвета (способы 2 — 4) должны быть преобразованы к типу TColor. Класс TCanvas содержит большое количество свойств и методов, позволяющих строить изображения. Многие из методов канвы аналогичны процедурам, которые использовались в библиотеке GraphABC среды программирования PascalABC.Net Описание этих методов приведено в приложении. Рассмотрим метод FloodFill, который позволяет производить заливку ограниченной области на канве. Первые два параметра метода (x, y) — координаты точки, лежащей внутри области. Граница области заливки определяется сочетанием параметров Color и FillStyle. Если для параметра Fillstyle определить значение fsBorder, то будет закрашена область, ограниченная цветом Color (пример 13.5). Если для параметра Fillstyle определить значение fsSurface, то цвет Color заменится, а другие цвета внутри области останутся неизменными (пример 13.6). Цвет и стиль, которым будет производиться заливка, определяются свойствами Brush. Пример 13.7. Создать проект «Раскраска». В проекте реализовать следующие возможности: загрузка графического файла, заливка ограниченной области по клику мыши, сохранение измененного файла. Этапы выполнения задания
7.1. Событие OnMouseDown возвращает координаты точки, в которой пользователь кликнул мышью. Эти координаты можно использовать для метода FloodFill. 7.2. Выбор цвета заливки должен осуществляться с использованием стандартного диалога ColorDialog. Для проверки работы проекта необходимо заранее подготовить рисунок, который можно будет раскрашивать. Этот рисунок должен быть сохранен в формате BMP. Контуры изображения лучше всего нарисовать черным цветом. Рисунок для раскраски поместить в папку \Win32\Debug. В этой папке сохраняется откомпилированный файл проекта. Если в событии OnFormCreate прописать команды, определяющие эту папку как текущую (см. пример 7.12), то при нажатии на кнопку Загрузить файл, рисунок будет виден сразу. Рисунок сохраняется в формате BMP. Если в свойствах компонента SavePictureDialog расширение не прописано, то при сохранении файла, пользователь должен дописать его самостоятельно. Используя методы канвы (отрезки, прямоугольники, овалы и др.), можно дополнить рисунок, сохраненный в формате BMP. Пример 13.8. Дополнить проект «Раскраска». Добавить кнопки «Нарисовать трубу» и «Облако». Реализовать соответствующие обработчики событий. Этапы выполнения задания
5. Написать обработчик события OnClick для компонента Button4. 5.1. Для рисования облака достаточно нарисовать три пересекающихся овала. |
Пример 13.4. Способы задания цвета в CBuilder:
Пример 13.5. Заливка красным цветом области, ограниченной линией черного цвета:
Пример 13.6. Перекраска белого цвета в красный:
Пример 13.7. Форма на этапе конструирования: Обработчик события OnClick для Button1.
Обработчик события OnClick для Button2.
Обработчик события OnMouseDown для компонента Image1.
Работающее приложение: Пример 13.8. Форма на этапе конструирования: Обработчик события OnCkick для Button3.
Обработчик события OnCkick для Button4.
Работающее приложение: |
Вопросы к параграфу
1. Какой компонент используется для размещения изображений? 2. Какое свойство позволяет загрузить готовое изображение в компонент Image? 3. С помощью какого свойства можно установить прозрачный фон для изображения? 4. Что такое канва? 5. Как задать цвет пикселя канвы? 6. Как работает метод FloodFill? 7. В чем разница в использование параметров fsSurface и fsBorder для метода FloodFill? |
Упражнения
1. Добавьте в проект из примера 13.3. еще одно животное (например, белку). Для размещения белки нужно добавить еще одну кнопку. Местоположение определить случайным образом в верхушке какого-либо дерева.
2. Добавьте в проект 13.7 следующее:
- Проверьте, как будет работать программа, если в событиях для Button3 и Button4 убрать в конце восстановление стиля Brush и Pen.
- Добавьте еще одну кнопку, при нажатии на которую на рисунке появится какой-нибудь элемент (крыльцо, ставни, дерево и т. д.). Напишите соответствующий обработчик события. Для определения координат пикселей можно открыть рисунок в Paint.
3. Придумайте свой собственный сюжет реализации раскраски по аналогии с проектом 13.7.