Контрольные работы по информатике Язык программирования Delphi (11 класс)

Раздел Информатика
Класс 11 класс
Тип Конспекты
Автор
Дата
Формат rar
Изображения Есть
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

СОДЕРЖАНИЕ


Введение

3

1. Общие сведения объекта Canvas.

4

2. Свойства карандаша.

5

3. Свойства кисти.

7

4. Пример использования объекта Canvas.

8

Список используемых источников.

13









Введение


Работа с графикой в Delphi это не только линии и рисунки, но также и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделять много времени. Работа с графикой в Delphi предполагает обращение к канве - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для этого мощные средства работы с графикой, облегчающие задачу программиста.

В работе с графикой в Delphi в распоряжении программиста находятся канва (холст, полотно - свойство Canvas Delphi компонентов), карандаш (свойство Pen), кисть (свойство Brush) того компонента или объекта, на котором предполагается рисовать. У карандаша Pen и кисти Brush можно менять цвет (свойство Color) и стиль (свойство Style). Доступ к шрифтам предоставляет свойство канвы Font. Эти инструменты позволяют отображать как текст, так и достаточно сложные графики математического и инженерного содержания, а также рисунки. Кроме этого, работа с графикой позволяет использовать в Delphi такие ресурсы Windows как графические и видеофайлы.

Цель контрольной работы: изучение свойств объекта Canvas, а также разработка ряда примеров работы с этим объектом.






1. Общие сведения объекта Canvas.


На вкладке Additional расположен специализированный компонент TImage, специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама Форма, которая размещает наши компоненты! Кроме того, для печати документов Delphi обращается к свойству Canvas такого объекта как принтер.

Основное свойство такого объекта как Canvas Delphi - Pixels[i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет. Например, выполнение оператора

Image1.Canvas.Pixels[100, 100]:=clRed;

приведёт к рисованию красной точки с координатами [100, 100]. Узнать цвет пиксела можно обратным присвоением:

Color:=Image1.Canvas.Pixels[100, 100];

Тип TColor определён как длинное целое (LongInt). Его четыре байта содержат информацию о долях синего (B), зелёного (G), и красного (R) цветов. В 16-ричной системе это выглядит так: $00BBGGRR. Доля каждого цвета может меняться от 0 до 255. Поэтому чтобы отобразить максимально красную точку, ей нужно присвоить цвет $000000FF.

Для стандартных цветов в Delphi определён набор текстовых констант. Увидеть его можно, открыв в Инспекторе Объектов свойство Color, например, той же Формы.

Следующая таблица содержит некоторые свойства и методы канвы:

Процедура TextOut(X, Y: Integer; const Text: WideString);

Производит вывод строки Text начиная с (X, Y) - левого верхнего пиксела текста.

Свойство TextWidth(var Text: String): Integer;

Содержит длину строки Text в пикселах.

Свойство TextHeight(var Text: String): Integer;

Содержит высоту строки Text в пикселах.

Процедура MoveTo(X, Y: Integer);

Производит перемещение позиции к пикселу с адресом (X, Y).

Процедура LineTo(X, Y: Integer);

Производит рисование прямой линии из точки текущей позиции к пикселу с адресом (X, Y). Адрес (X, Y) становится точкой текущей позиции.

Процедура FillRect(const Rect: TRect);

Заполняет прямоугольник Rect на холсте, используя текущую кисть. Может использоваться, в том числе, для стирания части изображения на холсте.


2. Свойства карандаша.


Разберёмся с цветом. Для рисования используется два понятия цвета - цвет карандаша и цвет кисти. За стиль карандаша (в том числе и цвет) отвечает свойство Pen объекта TCanvas. За стиль кисти отвечает свойство Brush. И Brush и Pen - это тоже объекты, у которых есть свои свойства.

Для начала разберёмся с объектом TPen. Этот объект отвечает за свойства карандаша. У него есть следующие свойства:

Color - цвет карандаша.

Handle - здесь находиться описание карандаша, которое можно использовать при обращении к WinAPI функциям. У большинства объектов есть свойство Handle, которое нужно только для API функций и в повседневных программах мы его использовать не будем.

Mode - режим отображение показывает, как будет рисоваться линия.

Style - стиль карандаша. Существуют следующие стили (графическое отображение стилей линий ты можешь увидеть на рисунке 4):

  • psSolid - сплошная линия;

  • psDash - линия в виде пунктира (состоит из коротких линий);

  • psDot - линия из точек;

  • psDashDot - линия с чередующимися чёрточками и точками;

  • psDashDotDot - линия с чередующимися чёрточками и двумя точками;

  • psClear - невидимая линия;

  • psInsideFrame - линия внутри формы. Внешне похожа на сплошную (рис. 1).

Width - ширина карандаша.

Контрольные работы по информатике Язык программирования Delphi (11 класс)

Рисунок 1. Стили линий

На следующем примере, можно увидить на практике свойства карандаша в действии. В обработчике события OnPaint (событие формы, которое используется для рисования) написан следующий текст:

Контрольные работы по информатике Язык программирования Delphi (11 класс)

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

Контрольные работы по информатике Язык программирования Delphi (11 класс)


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

В данном примере, по событию OnPaint (когда надо перерисовать форму) поочерёдно рисуются линии разного стиля. Для этого сначала выбираем нужный стиль (например, Canvas.Pen.Style:=psSolid - выбирает стиль сплошной линии).

Потом перемещаем карандаш в точку начала линии - Canvas.MoveTo(Х, Y). Метод MoveTo перемещает карандаш в позицию указанную в качестве параметров X, Y. При перемещении не происходит никакого рисования на холсте (Canvas). X и Y - это не сантиметры и не миллиметры, а количество пикселей (количество экранных точек).

Отсчёт координаты Х идёт слева на право. Это значит, что левая сторона окна равна нулевой позиции Х, а правая сторона окна - максимальное значение. Отсчёт координаты Y идёт сверху вниз. Это значит, что верхнее обрамление окна является нулевой точкой Y. При этом заголовок окна (с названием формы и системными кнопками) не входит в пространство окна.

Теперь рисуется линия с помощью метода LineTo(X, Y). В качестве параметров передаются конечные координаты линии. Отрезок будет нарисован, начиная от текущей позиции карандаша, куда был осуществлен переход с помощью метода MoveTo и до координат, указанных при вызове метода LineTo.

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



3. Свойства кисти.


За параметры кисти отвечает свойство Brush объекта TCanvas. Кисть используется для закраски замкнутых пространств. Она тоже имеет объектный тип как и карандаш, а значит обладает своими свойствами и методами.

У объекта кисти TBrush есть несколько свойств влияющих на параметры кисти:

Bitmap - картинка, которая будет использоваться в качестве фона закраски. Картинка должны быть формата 8х8 пикселей. Если будет больше, то задействованы будут только пиксели верхнего левого квадрата 8х8.

Color - так же как и у карандаша, у кисти тоже может быть свой цвет.

Handle - такой же указатель, как и у карандаша, но на кисть.

Style - стиль фона. Здесь могут быть следующие значения: bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross. На рисунке 3 можно увидеть графическое отображение каждого из стилей.

Контрольные работы по информатике Язык программирования Delphi (11 класс)


Рисунок 3. Стили фона



4. Пример использования объекта Canvas.


Пример 1. Паутинка (рис. 4).

Контрольные работы по информатике Язык программирования Delphi (11 класс)


Рисунок 4. Паутинка.



Листинг.


implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);

begin

Canvas.Pen.Width:=2;

Canvas.Pen.Color:=clRed;

Canvas.MoveTo(10,10);

Canvas.LineTo(210,210);

Canvas.MoveTo(60,10);

Canvas.LineTo(160,210);

Canvas.MoveTo(110,10);

Canvas.LineTo(110,210);

Canvas.MoveTo(160,10);

Canvas.LineTo(60,210);

Canvas.MoveTo(210,10);

Canvas.LineTo(10,210);

Canvas.MoveTo(210,60);

Canvas.LineTo(10,160);

Canvas.MoveTo(210,110);

Canvas.LineTo(10,110);

Canvas.MoveTo(210,160);

Canvas.LineTo(10,60);

Canvas.Pen.Color:=clBlue;

Canvas.MoveTo(30,30);

Canvas.LineTo(110,20);

Canvas.MoveTo(110,20);

Canvas.LineTo(190,30);

Canvas.MoveTo(190,30);

Canvas.LineTo(200,110);

Canvas.MoveTo(200,110);

Canvas.LineTo(190,190);

Canvas.MoveTo(190,190);

Canvas.LineTo(110,200);

Canvas.MoveTo(110,200);

Canvas.LineTo(30,190);

Canvas.MoveTo(30,190);

Canvas.LineTo(20,110);

Canvas.MoveTo(20,110);

Canvas.LineTo(30,30);

Canvas.MoveTo(50,50);

Canvas.LineTo(110,40);

Canvas.MoveTo(110,40);

Canvas.LineTo(170,50);

Canvas.MoveTo(170,50);

Canvas.LineTo(180,110);

Canvas.MoveTo(180,110);

Canvas.LineTo(170,170);

Canvas.MoveTo(170,170);

Canvas.LineTo(110,180);

Canvas.MoveTo(110,180);

Canvas.LineTo(50,170);

Canvas.MoveTo(50,170);

Canvas.LineTo(40,110);

Canvas.MoveTo(40,110);

Canvas.LineTo(50,50);

Canvas.MoveTo(70,70);

Canvas.LineTo(110,60);

Canvas.MoveTo(110,60);

Canvas.LineTo(150,70);

Canvas.MoveTo(150,70);

Canvas.LineTo(160,110);

Canvas.MoveTo(160,110);

Canvas.LineTo(150,150);

Canvas.MoveTo(150,150);

Canvas.LineTo(110,160);

Canvas.MoveTo(110,160);

Canvas.LineTo(70,150);

Canvas.MoveTo(70,150);

Canvas.LineTo(60,110);

Canvas.MoveTo(60,110);

Canvas.LineTo(70,70);

Canvas.MoveTo(90,90);

Canvas.LineTo(110,80);

Canvas.MoveTo(110,80);

Canvas.LineTo(130,90);

Canvas.MoveTo(130,90);

Canvas.LineTo(140,110);

Canvas.MoveTo(140,110);

Canvas.LineTo(130,130);

Canvas.MoveTo(130,130);

Canvas.LineTo(110,140);

Canvas.MoveTo(110,140);

Canvas.LineTo(90,130);

Canvas.MoveTo(90,130);

Canvas.LineTo(80,110);

Canvas.MoveTo(80,110);

Canvas.LineTo(90,90);

Canvas.Brush.Color:=clYellow;

Canvas.Ellipse(100,100,120,120);

end;

end.



Пример 2. Домик в ночи (рис. 5).

Контрольные работы по информатике Язык программирования Delphi (11 класс)


Рисунок 5. Домик в ночи.


Листинг.


implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);

var p:array[1..4] of TPoint;

begin

//стены

Canvas.Pen.Width:=2;

Canvas.Brush.Color:=clOlive;

Canvas.Rectangle(100,200,340,400);

Canvas.Brush.Color:=clNavy;

Canvas.Rectangle(200,140,240,200);

Canvas.Brush.Color:=clBlue;

Canvas.Rectangle(120,240,220,340);

Canvas.Brush.Color:=clWhite;

Canvas.Rectangle(130,250,160,280);

Canvas.Rectangle(180,250,210,280);

Canvas.Rectangle(130,290,210,330);

Canvas.Brush.Color:=clLime;

Canvas.Rectangle(240,280,320,400);

Canvas.Brush.Color:=clBlack;

Canvas.Rectangle(300,340,310,360);

//крыша

Canvas.Brush.Color:=clMaroon;

p[1].X:=100; p[1].Y:=200;

p[2].X:=220; p[2].Y:=60;

p[3].X:=340; p[3].Y:=200;

p[4].X:=100; p[4].Y:=200;

Canvas.Polygon(p);

Canvas.Brush.Color:=clNavy;

Canvas.Rectangle(200,140,240,200);

//Забор

Canvas.Brush.Color:=clGreen;

Canvas.Rectangle(60,300,100,400);

Canvas.Rectangle(20,300,60,400);

Canvas.Rectangle(340,300,380,400);

Canvas.Rectangle(380,300,420,400);

Canvas.Rectangle(420,300,460,400);

Canvas.Rectangle(460,300,500,400);

p[1].X:=20; p[1].Y:=300;

p[2].X:=40; p[2].Y:=260;

p[3].X:=60; p[3].Y:=300;

p[4].X:=20; p[4].Y:=300;

Canvas.Polygon(p);

p[1].X:=60; p[1].Y:=300;

p[2].X:=80; p[2].Y:=260;

p[3].X:=100; p[3].Y:=300;

p[4].X:=60; p[4].Y:=300;

Canvas.Polygon(p);

p[1].X:=340; p[1].Y:=300;

p[2].X:=360; p[2].Y:=260;

p[3].X:=380; p[3].Y:=300;

p[4].X:=340; p[4].Y:=300;

Canvas.Polygon(p);

p[1].X:=380; p[1].Y:=300;

p[2].X:=400; p[2].Y:=260;

p[3].X:=420; p[3].Y:=300;

p[4].X:=380; p[4].Y:=300;

Canvas.Polygon(p);

p[1].X:=420; p[1].Y:=300;

p[2].X:=440; p[2].Y:=260;

p[3].X:=460; p[3].Y:=300;

p[4].X:=420; p[4].Y:=300;

Canvas.Polygon(p);

p[1].X:=460; p[1].Y:=300;

p[2].X:=480; p[2].Y:=260;

p[3].X:=500; p[3].Y:=300;

p[4].X:=460; p[4].Y:=300;

Canvas.Polygon(p);

//луна

Canvas.Brush.Color:=clYellow;

Canvas.Ellipse(400,20,480,100);

end;


Список используемых источников.



1. Архангельский А.Я. «Приемы программирования в Delphi».: Издательство «Бином-Пресс» 2006г. -944 стр. -ISBN 5-9518-0145-1

2. С.И. Бобровский «Delphi 7 Учебный курс».: Издательство «Питер» 2004. - 736 с. - ISBN 5-8046-0086-9

3.Г.В. Галисеев «Компоненты в Delphi 7».: Издательство «Вильямс» 2004г. - 624стр. -ISBN 5-8459-0555-9

4. А. Шкрыль «Delphi.Народные советы».: Издательство BHV-СПБ 2007г. - 400стр. - ISBN 5-9775-0047-5

5. Культин Н.Б. «Основы программирования в Delphi 7».: Издательство BHV -

СПБ. 2008г. - 480 с. -ISBN 978-5-9775-0235-1

6. Культин Н.Б. Программирование на Object Pascal в Delphi 5.Самоучитель.:Издательство BHV-СПБ. - 464стр. -ISBN 5-8206-0079-7

7. Лабзина Т.А. Алгоритмические языки и программирование Юнита 5. Издательство НОУ СГУ, 1999.

8. Е.Марков «Программирование в Delphi 7».Издательство BHV-СПБ. 2003г. -784стр. -ISBN 5-94157-116-X

9. В.Кадлец «Delphi.Книга рецептов.Практические примеры, трюки и секреты».: Издательство «Наука и техника». 2006г. - 384стр. - ISBN 80-251-0017-0

10. Фаронов В.В. «Delphi 2005. Разработка приложений для баз данных и Интернета».: Издательство «Питер». 2006г. - 608стр. - ISBN 5-469-01191-7


© 2010-2022