Методичка. Полный обучающий курс по Turbo Pascal. Полный обучающий курс Turbo Pascal
Скачать 0.56 Mb.
|
Глава 6. Графика в системе Турбо ПаскальЭкран и окно в графическом режимеПо аналогии с текстовыми режимами графический экран может рассматриваться как одно большое или несколько меньших по размеру окон. После установки окна вся остальная площадь экрана как бы не существует, и весь ввод-вывод осуществляется только через окно. В каждый отдельный момент может быть активным только одно окно. Если окон несколько, за переключение ввода-вывода в нужное окно отвечает программист. По умолчанию окно занимает весь экран, значения координат его левого верхнего и правого нижнего угла устанавливаются автоматически процедурой инициализации InitGraph. Если требуется создать окно, следует воспользоваться процедурой SetViewPort (x1, y1, x2, y2 : integer, Clip:boolean) ; где x1, y1 – координаты левого верхнего угла, x2, y2 – координаты правого нижнего угла окна. Параметр Clip определяет, будет ли рисунок отсекаться при выходе за границы окна (Clip:= True) или нет (Clip:=False). После создания окна за точку отсчета принимается верхний левый угол окна, имеющий координаты (0,0). Координатную систему полного экрана можно восстановить, в частности, с помощью ClearDevice или задав в процедуре установки окна максимально возможные значения: SetViewPort( 0, 0, GetMaxX, GetMaxY, true); Необходимо помнить, что в отличие от текстовых окон графические окна после команды установки фона SetBkColor и очистки с помощью ClearViewPort меняют фон вместе с общим фоном экрана. Поэтому фон (точнее «закраску») графического окна следует устанавливать с помощью процедур SetFillStyle и SetFillPattern. Глава 6. Графика в системе Турбо ПаскальВывод простейших фигурВывод точкиКакие бы изображения не выводились на экран, все они построены из точек, теоретически можно создать любое изображение путем построения точек определенного цвета в нужном месте экрана. В библиотеке Graph вывод точки осуществляется процедурой PutPixel (x, y: integer, color:word); где x, y: координаты расположения точки, color – цвет. Возможные значения Color приведены в таблице: Цветовая шкала
Пример. PutPixel(320, 240, 4); ü ý- выводит в центре экрана точку красного цвета PutPixel(320,240, Red);þ Вывод линииИз точек строятся линии (отрезки прямых). Это можно сделать с помощью процедуры Line (x1, y1 , x2,y2 :integer); где x1, y1 – координаты начала, x2,y2 - координаты конца линии, например Line(1,1,600,1); В процедуре Line нет параметра для установки цвета. В этом случае цвет задается процедурой SetColor (цвет: word); где цвет из таблицы 1. Пример. SetColor(Gyan); Line(1,1,600,1); Для черчения линий применяются еще две процедуры: LineTo и LineRel. Процедура LineTo (x,y: integer) строит линию из точки текущего положения указателя в точку с координатами x,y. Процедура LineRel (dx,dy: integer) проводит линию от точки текущего расположения указателя (x, y) в точку x+dx, y+dy. Турбо Паскаль позволяет вычерчивать линии самого различного стиля: тонкие, широкие, штриховые, пунктирные и т.д. Установка стиля производится процедурой SetLineStyle(a,b,c: word), где a устанавливает тип строки, возможные значения которого приведены в таблице 2; b – образец, с – толщина линии, определяемая константами, указанными в таблице 3. Если применяется один из стандартных стилей, то значение b равно 0. Если пользователь хочет активизировать собственный стиль, то значение b =4. В этом случае пользователь сам указывает примитив (образец), из которого строится линия. Например: SetLineStyle(1,0,1); Line(15,15, 150,130); или SetLineStyle(UserBitLn,$5555,ThickWidth); Line(15,15, 150,130); таблица 2
таблица 3
Пример: Написать программу, которая вычерчивает треугольник красной линией в центре экрана. Program treug; uses graph; { подключение библиотеки графических процедур} var gd,gm: integer; {описание переменных, определяющих графический драйвер и монитор} begin gd:=detect; {определение значений переменных по выбору ПК} initgraph(gd, gm, ‘ c/bp’); {инициализация графического режима} SetColor(4); {задание цвета линии} SetLineStyle(1,0,3); {задание стиля линии} Line(320, 240, 320, 180); Line(320, 240, 390, 240); Line(390, 240, 320, 180); end. |