Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по теории.docx
Скачиваний:
10
Добавлен:
28.09.2019
Размер:
530.05 Кб
Скачать

Inherited Create; //Вызываем старый конструктор

SetLength(m,h,w); //Задаём размеры матрицы

End;

//-----------------------------------------------

//Процедура заполнения матрицы m данными из массива

//ВХОД: одномерный массив данных p

//-----------------------------------------------

Procedure TMat.Put(p:Array Of Real);

Var I,j,k:Integer;

Begin

k:=0;

For i:=0 To High(m) Do //Цикл по высоте матрицы

For j:=0 To High(m[i]) Do //Цикл по ширине матрицы

Begin

m[i,j]:=p[k]; Inc(k); //Последовательно копируем

End; //данные

End;

//-----------------------------------------------

//Процедура вывода матрицы m на экран

//ВХОД: k-символов на элемент, p-ширина дробной части

//-----------------------------------------------

Procedure TMat.Wrt(k:Integer=5; p:Integer=2);

Var

I,j:Integer;

Begin

For i:=0 To High(m) Do //Цикл по высоте матрицы

Begin

For j:=0 To High(m[i]) Do //Цикл по ширине

Write(m[i,j]:k:p,' '); //Выводим значение с пробелом

WriteLn; //Перевод строки

End;

End;

//-----------------------------------------------

//Процедура прибавления к m другой матрицы

//ВХОД: прибавляемая матрица a

//-----------------------------------------------

Procedure TMat.Add(a:TMat);

Var

I,j:Integer;

Begin

For i:=0 To High(m) Do //Цикл по высоте матрицы

For j:=0 To High(m[i]) Do //Цикл по ширине

m[i,j]:=m[i,j]+a.m[i,j]; //Прибавляем элемент

End;

//-----------------------------------------------

//Деструктор служит для разрушения объекта

//Он освобождает память, занятую объектом

//-----------------------------------------------

Destructor TMat.Destroy;

Begin

Inherited Destroy; //Вызываем старый деструктор

SetLength(m,0); //Разрушаем массив

End;

//===============================================

//РАЗДЕЛ ОПЕРАТОРОВ

//===============================================

Var

a,b:TMat; //Описываем объекты

Begin

a:=TMat.Create(3,3); //Формируем объект a

a.Put([1,2,3,4,5,6,7,8,9]); //Заполняем данными

a.Wrt(7,2); //Выводим на экран

WriteLn; //Переводим строку

b:=TMat.Create(3,3); //Формируем объект b

b.Put([5,5,5,5,5,5,5,5,5]);

b.Wrt(7,2);

WriteLn;

a.Add(b); //Складываем a = a + b

a.Wrt(); //Выводим результат на экран

a.Free; b.Free; //Разрушаем объекты

ReadLn;

end.

Билет №22:

Графический вывод на экран

Что такое контекст устройства (DCDevice Context)

  • это структура, содержащая описание графического устройства и средств построения изображений

  • устройствами могут быть: экран (или его часть), принтер, область памяти и др.

  • средствами построения служат инструменты: перья, кисти, шрифты, палитры и пр.

  • главнейшими свойствами инструментов являются: цвет и стиль, а также режим инструмента (принцип смешивания и способ масштабирования изображений)

  • контекст должен создаваться перед началом графических построений, а затем – разрушаться

Что такое канва

  • это класс TCanvas, представляющий абстрактное графическое устройство, которое обеспечивает однообразие методов вывода независимо от типа устройства

  • область графических построений определяется первой четвертью координатной плоскости (ось OX направлена слева направо, а OY - сверху вниз)

  • для удобства программирования класс TCanvas включает все инструменты, а также их свойства

  • TCanvas отвечает за создание и удаление вспомогательных графических объектов (кроме контекста DC)

Как начать и закончить построения непосредственно на экране

  1. Требуется подключить модули Windows и Graphics                    Uses                       Windows, Graphics;

  2. Следует описать объект типа TCanvas, например,                    var Cn: TCanvas;

  3. В начале программы необходимо создать канву и выбрать в качестве графического устройства DC экран                    Begin                        Cn := TCanvas.Create;                         //создаём канву                        Cn.Handle := GetDC(0);                      //выбираем экран

  4. Чтобы завершить работу в графике надо освободить контекст и канву                        ReleaseDC(0, Cn.Handle);                   //освобождаем контекст,                        Cn.Handle := 0;                                    //канву от контекста,

  5. а затем полностью её удалить                        Cn.Free;                                                //разрушаем канву

Во избежание ошибок следует использовать структуры обработки ошибок

tryfinally.

Удобно подключить модули Types, Forms и Dialogs, чтобы получить доступ к вспомогательным средствам.

Пример графической программы

program Graph_on_screen;

uses //МОДУЛИ, СОДЕРЖАЩИЕ ОПИСАНИЯ:

Dialogs, //-оконных сообщений ShowMessage

Windows, //-контекста DC

Graphics, //-канвы Canvas

Types, //-прямоугольника Rect

Forms; //-параметров экрана Screen.Width

//Screen.Height, Application