Автор работы: Пользователь скрыл имя, 23 Мая 2013 в 13:14, курсовая работа
Видеоадаптер может работать в двух режимах — в текстовом и в графическом. В текстовом режиме (например, режим командной строки DOS) в видеопамять записываются ASCII-символы. Знакогенератор, память знакогенератора и сдвиговый регистр формируют точечные изображения экранных ASCII-символов. Память знакогенератора содержит пикселные образы всех ASCII-символов (букв, цифр и знаков препинания). Знакогенератор преобразует данные из видеопамяти в последовательность пикселных битов и передает их в сдвиговый регистр. Сдвиговый регистр генерирует поток двоичных сигналов (битов). В это же время декодер атрибутов определяет режим отображения соответствующего ASCII-символа: стандартный, мигающий, инверсный, высокой яркости, а для цветных мониторов определяет цвет символа и цвет фона.
1. Теоретическая часть 3
1. 1. Текстовый и графический режимы 3
1.2. Переключение между текстовым и графическим режимами (инициализация и закрытие графики) 5
1.3. Основные графические функции. 8
2. Практическая часть 15
2.1. Постановка задачи 15
2.2. Описание алгоритма 16
2.3. Описание программы 17
Приложение А – Тексты программ 18
Приложение Б – Контрольный пример 20
GetPixel(x,y: integer): word;
Возвращает цвет точки с координатами (x,y).
Rectangle(x1,y1,x2,y2:integer)
Строит контур прямоугольника из линий текущего цвета.
Circle(x,y:integer; r:word);
Для рисования окружностей
используется процедура Circle с тремя
целочисленными параметрами:
x,y - координаты центра окружности;
r - радиус.
Arc(x,y:integer; StA,EndA,Radius:word);
Нарисует дугу окружности текущим цветом. x,y - координаты центра
окружности данной дуги;
Sta - начальный угол; (в градусах)
EndA - конечный угол; (в градусах)
Radius - радиус дуги.
Ellipse(x,y:integer; stA,endA:word; xr,yr: word);
Рисует дугу эллипса
текущим цветом.
x,y - координаты центра эллипса;
stA - начальный угол;
endA - конечный угол;
xr,yr - горизонтальная и вертикальная полуоси
эллипса.
SetLineStyle(Ln,P,T)
Рисование линий, окружностей
и их элементов, контуров прямоугольников
осуществляется линиями. Процедура SetLineStyle позволяет изменять параметры этих
линий. Параметры этой процедуры - целые
числа.
Ln - стиль
линии:
0 = сплошная;
1 = пунктирная;
2 = штрихпунктирная;
3 = штриховая;
4 = заданная пользователем.
T - толщина линии:
1 = нормальная;
3 = толстая.
P - шаблон:
0 - во всех случаях для Ln от 0 до 3;
Для Ln = 4 устанавливается шаблон линии в виде
двухбайтового числа, каждый
если его надо высветить и 0 - в противном случае.
Например линия в виде 1111111100000000 в
шестнадцатиричной форме
Кратко описанные в данной лабораторной работе графические процедуры и функции составляют лишь небольшую часть богатого арсенала библиотеки GRAPH.TPU. Несмотря на то, что в последствии мы изучим все основные возможности этой библиотеки, вы в любой момент можете сделать это самостоятельно, воспользовавшись системой помощи. Для этого необходимо войти в раздел HELP главного меню, и выбрав разделы подменю Standart Units и Graph, выбрать описание необходимой процедуры или функции.
Выбор нужной точки экрана обычно выполняется подводом курсора к этой точке и нажатием клавиши ENTER. Иногда бывает полезно видеть и предыдущую выбранную точку — последнюю точку, зафиксированную клавишей ENTER, и новую точку, на которую указывает курсор. Для этого может использоваться, например, «метод резиновой нити».
В «методе резиновой нити» один конец отрезка зафиксирован и указывает последнюю выбранную точку, второй конец перемещается в соответствии с изменением указываемой точки.
Построить ломаную линию по заданныи вершинам. Вершины указываются с клавиатуры по «методу резиновой нити».
Нет да
нет да
Тип |
Имя переменной |
Описание |
integer |
X,y,x1,y1 |
Координаты точек на экране |
integer |
errcode |
Код вывода ошибки |
string |
grPath |
Путь к драйверу графическому |
integer |
Grdriver, grmode |
Виды графических драйверов |
Graph – подпрограмма графического режима
Klass – подпрограмма инициализации и работы с объектом (окружностью)
Тип |
Имя переменной |
Описание |
integer |
Nx,ny |
Координаты точек |
unit klass;
interface
type kr=object
private
x,y : integer;
visible : boolean;
public
constructor Init( nx,ny : integer );
procedure Show;
procedure Hide;
procedure MoveTo( nx,ny : integer );
end;
implementation
uses graph;
constructor kr.Init( nx,ny : integer );
begin
x:=nx; y:=ny; visible:=false;
end;
procedure kr.Show;
begin
visible:=true; setcolor(1); circle(x,y,2);
end;
procedure kr.Hide;
begin
visible:=false; setcolor(0);circle(x,y,2); end;
procedure kr.MoveTo(nx,ny : integer );
var v : boolean;
begin
v:=visible;
if (v) then Hide;
x:=nx; y:=ny;
if (v) then Show;
end;
end.
program prog3;
uses graph,klass,crt;
var
grdriver :integer;
grmode: integer;
grPath:string;
errcode,v:integer;
kr1:kr;
v1, d, m: integer;
x,y,x1,y1:integer;
i:string;
begin
grdriver:= vga;
grMode:= VGAHi;
grPath:='C:\bp\bgi' ;
initgraph (grdriver,grmode,grpath);
errcode:=graphResult;
if errcode <>grok then
begin
writeln('ЋиЁЎЄ . Џа®ўҐам⥠Їгвм c:\bp\bgi');
readln;
halt(1);
end;
x:=100;
y:=100;
repeat
x1:=x;
y1:=y;
kr1.init(x,y);
kr1.show;
readln(x);
readln(y);
if x<>0 then
line(x1,y1,x,y);
until x=0;
end.