Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 1.doc
Скачиваний:
34
Добавлен:
22.02.2015
Размер:
1.94 Mб
Скачать
        1. ОператорWith

 Синтаксис

WITH<Структурная переменная>DO<Оператор>

Оператор WITH применяется для упрощения доступа к свойствам структурных переменных (типа «запись», «объект» или «класс»). Действие оператора можно продемонстрировать, переписав соответствующим образом тело процедуры, приведенной в предыдущем примере.

 Пример

WITH Image1.Picture.Bitmap DO

BEGIN

Width:=Image1.Width;

Height:=Image1.Height;

END;

        1. КлассTCanvas

Класс TCanvas предоставляет средства для рисования на различных типах изображений, например на растровых изображениях, представляемых классомTBitmap. Основные используемые для рисования процедуры классаTCanvas приведены в следующей таблице.

Процедура

Описание

Rectangle(x1,y1,x2,y2)

Рисование прямоугольника, левый верхний угол которого задается точкой (x1,y1), а правый нижний точкой (x2,y2). При этом внутренняя часть прямоугольника заполняется текущим цветом фона. На растровом изображении рисование прямоугольника происходит следующим образом:

При этом в прямоугольник не включаются самая правая и самая нижняя границы.

MoveTo(x,y)

Перемещение текущей позиции в точку (x,y)

LineTo(x,y)

Рисование линии из текущей позиции до точки (x,y). При этом текущая позиция перемещается в точку (x,y)

Ellipse(x1,y1,x2,y2)

Рисование эллипса, вписанного в прямоугольник, задаваемый точками (x1,y1), и (x2,y2)

Продемонстрируем использование процедур класса TCanvas на примере изображения треугольника с известными сторонами. Расположим треугольник, как показано на следующем рисунке:

,

Перепишем процедуру обработки события от нажатия кнопки Button1 из рассмотренного ранее примера.

 Пример

PROCEDURE TForm1.Button1Click(Sender: TObject);

VAR

a,b,c,p,s,h:Real;

BEGIN

WITH Image1.Picture.Bitmap DO

BEGIN

Width:=Image1.Width;

Height:=Image1.Height;

END;

a:=150;b:=100;c:=120;

p:=(a+b+c)/2;

s:=Sqrt(p*(p-a)*(p-b)*(p-c));

WITH Image1.Picture.Bitmap.Canvas DO

BEGIN

MoveTo(0,0);

LineTo(Round(a),0);

h:=2*s/a;

LineTo(Round(Sqrt(Sqr(c)-Sqr(h))),Round(h));

LineTo(0,0);

END;

END;

Результат работы программы представлен на следующем рисунке.

Библиографический список

0. Архангельский А.Я. Программирование в Delphi 5. 2-е изд., перераб. и доп. М.: Бином, 2000.

0. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.

0. Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. Харьков: Фолио; Ростов-на-Дону: Феникс, 1997.

0. Ершов А.П. Введение в теоретическое программирование. М.: Наука, 1977.

0. Кнут Д. Искусство программирования для ЭВМ. М.: Мир, 1977. Т.1.

0. Кнут Д. Искусство программирования для ЭВМ. М.: Мир, 1977. Т.2.

0. Культин Н.Б. Программирование в Turbo Pascal 7.0 иDelphi: Самоучитель. 2-е изд. СПб; М.; Дюссельдорф; Киев:BHV, 2000.

0. Новиков Ф.А. Дискретная математика для программистов. СПб: Питер, 2000.

0. Фихтенгольц Г.М. Курс дифференциального и интегрального исчисления, т. 2. М.: Наука, 1966.

Учебная литература

Партин Александр Сергеевич

Программирование на языке Паскаль

Редактор – Т.Н. Газитарова

ИД № 06263 от 12.11.2001

Подписано в печать Формат 60х84

Бумага типографская Офсетная печать Усл. печ. л. ___

Уч.-изд. л. 2,4 Тираж ___ Заказ ___ Цена «с»

Издательство ГОУ УГТУ – УПИ