
- •Оглавление
- •Введение
- •Глава 1
- •Использование компонентов общего назначения: tLabel, tButton, tEdit, tShape, tTimer, tPanel
- •1.1.1. Проект «Калькулятор»
- •1.1.2. Проект «Таймер»
- •1.1.3. Проект «Светофор»
- •1.1.4. Проект «Движение шарика tShape с отражением»
- •Глава 2
- •2.1. Класс tCanvas, его свойства и методы
- •2.1.1. Рисование узоров
- •2.1.2. Рисование поля для различных игр
- •2.1.3. Рисование координатной сетки
- •2.1.4. Построение графиков элементарных функций
- •2.2. Класс tBitmap и работа с растровыми рисунками
- •2.2.1. Рисование на поле растрового рисунка
- •2.2.2. Движение двоичного образа по фоновой картинке
- •2.3. Компонент tImage и его использование
- •2.3.1. Проект «Движение компонента tImage»
- •2.3.2. Перемещение картинок
- •2.3.3. Проект «Движение компонента tImage
- •Глава 3
- •3.1. События от мыши
- •3.1.1. Проект «Попади в мишень»
- •3.1.2. Проект «Снежинки»
- •3.1.3. Проект «Крестики-нолики»
- •3.1.4. Движение образа по удерживанию левой кнопки мыши
- •3.1.5. Проект «Жизнь клеток»
- •3.2. События от клавиатуры
- •3.2.1. Код клавиши
- •3.2.2. Управляемое движение образа
- •3.2.3. Совмещение управляемого и неуправляемого движений.
- •Глава 4
- •4.1. Проект «Простейший графический редактор»
- •Глава 5
- •5.1. Создание кнопок
- •5.1.1. Проект «Лохотрон»
- •5.1.2. Игра «Пятнадцать»
- •5.2. Создание компонентов tImage
- •5.2.1. Проект «Угадай картинку»
- •5.2.2. Проект «Собери картинку»
- •Глава 6
- •6.1. Компоненты tStringGrid и tDrawGrid
- •6.1.1. Сортировка массива
- •6.1.2. Проект «Таблица успеваемости»
- •6.1.3. Система предварительной продажи билетов
- •6.1.4. Проект «Таблица рисунков»
- •6.1.5. Рисование в таблице tDrawGrid
- •6.2. Компоненты tListBox, tCombobox ,
- •6.2.1. Прорисовка изображений в списке tListBox
- •6.2.2. Проект «Зоомагазин»
- •6.2.3. Проект «Шуточная игра»
- •6.2.4. Проект «Редактирование списка вопросов»
- •Глава 7
- •7.1. Тест «Знаете ли вы загадки?»
- •7.2. Проект «Исторические даты»
- •Глава 8
- •8.1. Компоненты tOpenDialog, tSaveDialog – диалоги
- •8.1.1. Просмотр текстовых файлов
- •8.2. Добавление и удаление записей в файл и из файла
- •8.2.1. Проект «Журнал группы»
- •8.3. Файлы для проекта «Судоку»
- •Глава 9
- •9.1. Просмотр видеофильма с использованием
- •9.2. Простейшая мультипликация
- •Глава 10
- •10.1. Пример использования try… except
- •Глава 11
- •11.1. Оформление проекта
- •11.1.1. Проект «Бегущая строка»
- •11.1.2. Проект «Титры»
- •11.1.3. Общие рекомендации по оформлению
- •11.2. Рекомендации для отчета по проекту
- •11.3. Темы проектов
- •11.3.1. Головоломка «Сквэрворд»
- •11.3.2. Задача «Путешествие по маршруту»
- •11.3.3. Головоломка «Ходом коня»
- •11.3.4. Задача «Извилистый путь»
- •11.3.5. Головоломка «Фишки на поле»
- •Список литературы
- •630058, Новосибирск, ул. Русская, 35
Глава 4
Использование компонентов TMainMenu, TToolBar, OpenPictureDialog, SavePictureDialog, ColorDialog
в графических приложениях
4.1. Проект «Простейший графический редактор»
Постановка задачи. Создать графический редактор, рисующий основные фигуры: прямоугольник, окружность, линию. Ввод координат осуществлять путем нажатия и отпускания кнопки мыши. Для рисования фигур использовать меню или (и) панель инструментов – компонент TToolBar. Реализовать выбор цвета для контура фигуры и для заливки. Обеспечить возможность открытия и сохранения в графическом файле рисунка. При рисовании линии предусмотреть рисование мышью с отпусканием левой кнопки.
Реализация. Положите на форму:
компонент Image1, его графическое поле будет использоваться в качестве области рисования, а также сохраняться в файле;
четыре надписи TLabel для вывода имен координат;
четыре редактора TEdit для вывода значений координат;
компонент TMainMenu для создания пунктов меню «Файл», «Графические примитивы», «Очистка поля», «Выбор цвета»;
панель инструментов – компонент TToolBar для дублирования некоторых функций меню, или же вместо меню;
коллекцию изображений ImageList1 для хранения изображений, которые будут помещены на кнопки панели инструментов;
диалог TColorDialog, позволяющий выбрать цвет с использованием диалогового окна;
диалог TOpenPictureDialog, который позволяет открыть файл в диалоговом окне;
диалог TSavePictureDialog, который позволяет через диалоговое окно сохранить файл.
На рис. 25 показана форма проекта, в которой компонент TToolBar не используется.
Рис. 25. Форма проекта «Графический редактор»
Создадим программные коды обработчиков событий нажатия и отпускания кнопки мыши на графическом поле Image1.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
pr:=true;
xp:=x;
yp:=y;
x1:=x;
y1:=y;
Edit1.Text:=IntToStr(x1);
Edit2.Text:=IntToStr(y1);
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
pr:=false;
x2:=x;
y2:=y;
Edit3.Text:=IntToStr(x2);
Edit4.Text:=IntToStr(y2);
end;
На событие OnMouseMove программный код должен обеспечить рисование линии по удерживанию левой кнопки мыши.
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if pr then
with Image1.Canvas do
begin
Pen.Width:=w;
Pen.Color:=cl_ln;
MoveTo(xp,yp);
LineTo(x,y);
end;
xp:=x;
yp:=y;
end;
В диалоговом окне Form1.MainMenu1, открывающемся после двойного щелчка по компоненту MainMenu1, создайте меню проекта (рис. 26).
Рис. 26. Редактор меню
Программный код обработчика события рисования закрашенного прямоугольника может быть таким:
procedure TForm1.N5Click(Sender: TObject);
begin {Закрашенный прямоугольник}
with Image1.Canvas do
begin
Brush.Color:=cl_zal;
Rectangle(x1,y1,x2,y2);
end;
end;
Аналогично создаются коды по другим пунктам меню. Для примера приведены программные коды опций меню «Очистка поля», «Выбор цвета» и «Сохранить файл».
procedure TForm1.N7Click(Sender: TObject);
begin {очистка области рисования }
with Image1.Canvas do
begin
pen.color:=Form1.Color;
brush.color:=Form1.Color;
rectangle(0,0,Image1.Width,Image1.Height);
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin // Сохранить файл
if SavePictureDialog1.Execute then
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
procedure TForm1.N13Click(Sender: TObject);
begin // Цвет контура
if colordialog1.Execute then
begin
cl_ln:=colordialog1.Color;
Image1.Canvas.Brush.Color:=cl_ln;
end;
end;
Аналогично пишется код для выбора цвета заливки области рисования.
Задание. Закончите этот проект. Нарисуйте что-нибудь и сохраните в файле. Положите панель инструментов – компонент TToolBar для дублирования некоторых опций меню, коллекцию изображений ImageList1 для хранения изображений, которые будут помещены на кнопки панели инструментов, и напишите к кнопкам соответствующие обработчики.