1 / 39

Графические возможности

Графические возможности. Pascal. Любое изображение на экране монитора формируется из отдельных элементов – пикселов (от англ. Pixel - Picture Element – элемент изображения).

lecea
Download Presentation

Графические возможности

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Графические возможности Pascal

  2. Любое изображение на экране монитора формируется из отдельных элементов – пикселов (от англ. Pixel - PictureElement – элемент изображения). • Для получения того или иного изображения на экране монитора как в графическом, так и в текстовом режимах необходимо заставить светиться строго определенную группу пикселов. • В текстовом режиме на экран могут выводиться только определенные символы, образы которых хранятся в постоянной или оперативной памяти компьютера, а управление отдельными пикселами невозможно. • В графическом режиме появляется возможность управления отдельными пикселами, что позволяет формировать любые изображения.

  3. С технической точки зрения управлением монитора занимается специальное устройство компьютера – видеоадаптер. • видеоадаптер – это весьма сложное электронное устройство, управляемое собственным микропроцессором. • В самом общем виде видеоадаптер состоит из контроллера электронно-лучевой трубки (CRT-контроллера) и видеопамяти (видеобуфера).

  4. Чтобы сделать процесс создания графических изображений более простым и эффективным фирма BorlandInternational разработала специальную библиотеку GRAPH, а также набор графических драйверов, позволяющих работать с различными типами видеоадаптеров. • Графический драйвер – это вспомогательная программа-посредник, обеспечивающая взаимодействие пользовательских программ с конкретным графическим устройством. • Графические драйверы хранятся в файлах с расширением .BGI (BorlandGraphicInterface). Обычно эти файлы расположены в каталоге \BP\BGI (или \TP\BGI).

  5. Инициализация графического режима • Любая программа, использующая графику должна прежде всего подключить модуль Graph. Это выполняется директивой USES: • USESGraph; • Прежде чем работать с графикой необходимо установить определенный графический видеорежим. Выбор видеорежима зависит от имеющегося графического адаптера. • Большинство современных компьютеров (IBM-совместимых) имеют в своем составе видеоадаптер стандарта VGA (VideoGraphicArray) или SuperVGA. Для работы с таким адаптером используется графический драйвер EGAVGA.BGI.

  6. При этом имеется возможность работы в трех различных видеорежимах: Во всех трех видеорежимах возможно одновременное отображение до 16 различных цветов.

  7. процедуры инициализации графики – InitGraph • InitGraph( var GraphDriver, GraphMode : Integer; DriverPath : String ); • В модуле Graph для задания типа видеоадаптера определен ряд констант: • Detect = 0 – автоопределение;CGA = 1 – адаптер CGA;EGA = 3 – адаптер EGA;VGA = 9 – адаптер VGA;

  8. Pascal • USES Graph;VARGrDr, GrMd : integer;BEGINGrDr := detect;InitGraph( GrDr, GrMd, ‘c:\bp\bgi’ );  { теперь можно вызывать графические процедуры }  . . .  . . .  . . .CloseGraph;END.

  9. Система координат

  10. Чтобы узнать максимальные координаты экрана в текущем режиме работы, воспользуемся стандартными функциями GetMaxX и GetMaxY. Для этого наберите небольшую программу: • Uses Graph;VarGraphDriver, GraphMode: integer;BeginGraphDriver:=detect;InitGraph(GraphDriver, GraphMode, ‘’);Writeln(GetMaxX, 'x', GetMaxY);Readln;CloseGraph;End.

  11. Чтобы точно строить изображение на экране, Вам нужно сначала нарисовать, как это должно выглядеть на бумаге. Для этого начертите в тетради систему координат графического режима.

  12. Чтобы переместить курсор в нужное место используют следующие процедуры: • MoveTo (X, Y), где переменные X, Y типа Integer - перемещает текущий указатель в точку с координатами (X,Y). • Например, MoveTo (200, 100) • MoveRel (dX, dY), где переменные dX, dY типа Integer - перемещает текущий указатель по горизонтали на расстояние, равное dX пикселям, а по вертикали на расстояние, равное dY пикселям. (Relation (англ.) - относительно) • Например, если после выполнения предыдущей процедуры текущий указатель находится в точке (200, 100), то после выполнения процедуры MoveRel (25, 150) он будет находится в точке с координатами (225, 250). • PutPixel(X, Y, Color), где переменные X, Y типа Integer, а Color типа Word - процедура выводит точку заданного цвета Color в точку с координатами (X, Y).

  13. Задание • Наберите в теле программы следующие процедуры PutPixel(300, 150, Red), PutPixel(45, 420, 9) и просмотрите их действие.

  14. Графика 26.08.2014

  15. Line (X1, Y1, X2, Y2), где переменные X1, Y1, X2, Y2 типа Integer - рисуется линия от точки (X1, Y1) до точки (X2, Y2). • LineTo (X, Y),где переменные X, Y типа Integer - рисуется линия из точки, где находится в данный момент курсор в точку (X, Y). • LineRel (dX,dY),где переменные dX, dY типа Integer - рисуется линия из точки, где находится в данный момент курсор (X, Y) в точку (X+dX,Y+dY).

  16. (250; 100) (50; 200) (450; 200) (400; 200) (100; 200) (100; 400) (400; 400)

  17. USES Graph;VAR  GrDr, GrMd : integer;BEGIN  GrDr := detect;  InitGraph( GrDr, GrMd, ‘’ ); line(100,200,400,200); line(100,200,100,400); line(400,400,100,400); line(400,400,400,200); line(50,200,250,100); line(50,200,450,200); line(250,100,450,200); CloseGraph;END.

  18. Придумайте самостоятельно примеры с использованием всех процедур вычерчивания линий.

  19. SetColor (Color), где переменная Color типа Word - устанавливает текущий цвет для выводимых линий и символов. • Для установка цвета фона графического экрана имеется процедура: • SetBkColor( Color )

  20. (250; 100) (50; 200) (450; 200) (400; 200) (100; 200) (100; 400) (400; 400)

  21. USES Graph;VAR  GrDr, GrMd : integer;BEGIN  GrDr := detect;  InitGraph( GrDr, GrMd, ‘’ ); setcolor(red); • line(100,200,400,200); line(100,200,100,400); line(400,400,100,400); line(400,400,400,200); • Setcolor(blue) line(50,200,250,100); line(50,200,450,200); line(250,100,450,200); CloseGraph;END.

  22. Задания: • Исправьте свою программу так, чтобы процедуры рисовали линии различных цветов. • В начерченной ранее системе координат изобразите на чертеже точки: А(150,450), В(100,350), С(350,350), D(300,450), E(200,350), F(200,50), L(250,40), K(200,20), M(300,250), X(175,400), Y(225,400), Z(275,400). • Соедините точки, получая отрезки: AB, BC, CD, AD, EK, KL, LF, FM, ME. Какая фигура у Вас получилась? • Напишите программу, рисующую эту фигуру, по вашему рисунку.

  23. Графика 26.08.2014

  24. Построение прямоугольников Для построения прямоугольных фигур имеется несколько процедур. Первая из них – процедура вычерчивания одномерного прямоугольника: • Rectangle( X1, Y1, X2, Y2 ), • где X1, Y1 – координаты верхнего левого угла, X2, Y2 – координаты правого нижнего угла прямоугольника.

  25. (250; 100) (50; 200) (450; 200) (400; 200) (100; 200) (100; 400) (400; 400)

  26. USES Graph;VARGrDr, GrMd : integer;BEGINGrDr := detect;InitGraph( GrDr, GrMd, ‘’ );setcolor(red); • rectangle(100,200,400,400); • Setcolor(blue) line(50,200,250,100); line(50,200,450,200); line(250,100,450,200); CloseGraph;END. • USES Graph;VAR  GrDr, GrMd : integer;BEGIN  GrDr := detect;  InitGraph( GrDr, GrMd, ‘’ ); setcolor(red); • line(100,200,400,200); line(100,200,100,400); line(400,400,100,400); line(400,400,400,200); • Setcolor(blue) line(50,200,250,100); line(50,200,450,200); line(250,100,450,200); CloseGraph;END.

  27. закрашенные прямоугольники • Bar( X1, Y1, X2, Y2 ), • где параметры X1, Y2, X2 и Y2 имеют то же смысл, что и в процедуре Rectangle. • Цвет и стиль закраски устанавливается процедурой • SetFillStyle( Pattern, Color ), • где параметр Pattern определяет стиль (шаблон) заливки, а параметр Color – ее цвет. Возможные значения параметра Pattern приведены в таблице

  28. (250; 100) (50; 200) (450; 200) (400; 200) (100; 200) (100; 400) (400; 400)

  29. USES Graph;VARGrDr, GrMd : integer;BEGINGrDr := detect;InitGraph( GrDr, GrMd, ‘’ );SetFillStyle(LtslashFill,blue); bar(100,200,400,400);Setcolor(blue) line(50,200,250,100); line(50,200,450,200); line(250,100,450,200); CloseGraph;END.

  30. Для построения “объемных” закрашенных прямоугольников используется процедура: • Bar3D( X1, Y1, X2, Y2, Depth, Top ). Тип и цвет заливки устанавливается процедурой SetFillStyle. Параметр Depth определяет глубину трехмерного контура. Чаще всего его значение равно четверти ширины прямоугольника: • Depth := (X2-X1) div 4; Параметр Top определяет, строить над прямоугольником вершину (True) или нет (False). Например: • SetFillStyle( XhatchFill, Red );Bar3D( 10, 10, 50, 100, 10, True );

  31. Процедура вычерчивания окружностей текущим цветом имеет вид: • Circle( X, Y, Radius ), • где X, Y – координаты центра окружности, а Radius – ее радиус. Например, следующий фрагмент выводит ярко-зеленую окружность c радиусом 50 пикселов и центром в точке 450, 100: • SetColor( LightGreen );Circle( 450, 100, 50 );

  32. вычерчивание дуг • Arc( X, Y, StartAngle, EndAngle, Radius ), • где X, Y – координаты центра дуги, StartAngle и EndAngle – начальный и конечный угол (в градусах), Radius – радиус. Очевидно, что если StartAngle = 0, а EndAngle = 359, то вычерчивается полная окружность.

  33. Заполнение замкнутых областей • FloodFill( X, Y, Border ), • где X, Y – координаты точки внутри или вне фигуры, Border – цвет контура фигуры. Если точка (X, Y) находится внутри замкнутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть. • Пример: Красная окружность заполненная зеленой штриховкой • SetColor( Red ); Circle( 450, 100, 50 );SetFillStyle( SlashFill, Green ); FloodFill( 450, 100, Red );

  34. Установка стиля линии • SetLineStyle( Style, Pattern, Thickness ), • где Style – параметр, определяющий стиль линии. Возможные значения этого параметра приведены в таблице; Pattern – образец; Thickness – толщина линии. Если применяется один из стандартных стилей, значение параметра Pattern должно быть равно 0.

  35. NormWidth = 1  – линия толщиной в один пикселThickWidth = 3  – линия толщиной в три пиксела

More Related