Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 10.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
152.58 Кб
Скачать

6.5.2. Пример 1. Рисование на канве

Рассмотрим следующую задачу: в текстовом файле записано несколько строк. Каждая строка начинается с символа, обозначающего один из методов канвы. Затем в той же строке приведено несколько значений целого типа, необходимых для работы этих методов. Необходимо прочитать этот файл и построить графические примитивы на канве. В табл. 6.4 приведены первые символы строки и методы соответствующие этим символам.

Таблица 6.5

Символ

Метод

Назначение

L

LineTo(x1,y1)

Отрезок прямой

M

MoveTo(x1,y1)

Переместить указатель

R

RectAngle(x1,y1,x2,y2)

Прямоугольник

E

Ellipse(x1,y1,x2,y2)

Эллипс

C

Brush.Color:=C

Цвет кисти

C

Pen.Color:=C

Цвет пера

T

TextOut(x1,y1,s);

Строка текста

Список параметров каждого метода определяет число и тип значений, идущих в каждой строке за первым символом. Так, например, если строка начинается с символа T, то далее в строке ожидается два целых числа и строка.

Для реализации этой задачи создадим проект из одной формы FormMain, на которую выставим компоненты TMainMenu и OpenDialog. В меню определим только два пункта: Open и Exit. Создадим обработчик события Open1Click и метод формы DrawPicture(FName: string), который необходимо «прописать» в классе TFormMain (листинг 6.3):

Листинг 6.3. Описание класса формы

TFormMain = class(TForm)

MainMenu1: TMainMenu;

File1: TMenuItem;

Open1: TMenuItem;

N1: TMenuItem;

Exit1: TMenuItem;

OpenDialog1: TOpenDialog;

procedure Exit1Click(Sender: TObject);

procedure Open1Click(Sender: TObject);

private

{ Private declarations }

procedure DrawPicture(FName: string);

public

{ Public declarations }

end;

Обработчик события Open1Click вызывает диалог OpenDialog1 и, в случае нажатия кнопки Ok, вызывает процедуру DrawPicture:

Листинг 6.4. Обработчик события Open1Click

procedure TFormMain.Open1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

DrawPicture(OpenDialog1.FileName);

end;

Основная процедура DrawPicture открывает текстовый файл и циклом while читает все строки файла (листинг 6.5).

Листинг 6.5. Процедура чтения файла и рисования DrawPicture

procedure TFormMain.DrawPicture(FName: string);

var f: textfile;

ch: char;

x1,y1,x2,y2,C: integer;

s: string;

begin

AssignFile(f,FName); Reset(f); // открыть файл

with Canvas do

begin

while not EOF(f) do begin

Read(f,ch); // чтение первого символа строки

case ch of // чтение остальных данных в строке и построение

'L': begin // линия

Readln(f,x1,y1); LineTo(x1,y1);

end;

'R': begin // прямоугольник

Readln(f,x1,y1,x2,y2); RectAngle(x1,y1,x2,y2);

end;

'E': begin // эллипс

Readln(f,x1,y1,x2,y2); Ellipse(x1,y1,x2,y2);

end;

'C': begin // установить цвет заливки

Readln(f,C); Brush.Color:=C;

end;

'c': begin // установить цвет линий

Readln(f,C); Pen.Color:=C;

end;

'T': begin // нарисовать строку символов

Readln(f,x1,y1,s); TextOut(x1,y1,s);

end;

end;

end;

end;

CloseFile(f); // закрыть файл

end;