Модуль графики для WDE

Просмотров: 41138

Введение

В WDE начиная с версии 0.7 появилась возможность создавать простые графические программы. Для этого создан модуль Graph, являющийся облегченной версией модуля GraphABC. В WDE версии 0.8 появилась процедура Sleep и кардинально ускорена графика.

Простейшая программа имеет вид:

uses Graph;
begin
Line(10,10,100,100);
end.

В результате ее запуска в WDE мы увидим следующее графическое окно:

Перечислим основные возможности модуля Graph.

Графические примитивы

procedure Line(x1,y1,x2,y2: real);
procedure MoveTo(x,y: real);
procedure LineTo(x,y: real);
procedure PutPixel(x,y: integer; c: Color);
procedure DrawRectangle(x1,y1,x2,y2: real);
procedure FillRectangle(x1,y1,x2,y2: real);
procedure Rectangle(x1,y1,x2,y2: real);
procedure DrawCircle(x,y,r: real);
procedure FillCircle(x,y,r: real);
procedure Circle(x,y,r: real);
procedure TextOut(x,y: integer; s: string);
procedure Sleep(ms: integer);

Перо, кисть, шрифт и их свойства

Перо Pen имеет следующие свойства:

Pen.Color − цвет пера;
Pen.Width − ширина пера.

Кисть Brush имеет следующие свойства:

Brush.Color − цвет.

Шрифт Font имеет следующие свойства:

Font.Color − цвет шрифта;
Font.Size − размер шрифта в пунктах;
Font.Style − стиль шрифта (задается константами fsNormal, fsBold, fsItalic, fsBoldItalic);
Font.Name − имя шрифта (например, serif, sans-serif, Arial,Courier New, Times New Roman)

Цвета

Цвет определяется типом Color − записью с полями R, G, B, Alpha. R, G, B − целые в диапазоне 0..255, Alpha − вещественное в диапазоне 0.0 - 1.0 (по умолчанию 1.0 − полностью непрозрачный цвет).

Ряд функций типа Color возвращает конкретные цвета, в их числе: Color.Red, Color.Green, Color.Blue, Color.Black, Color.White, Color.Gray.

Кроме того, для задания цвета используются функции

function RGB(r,g,b: byte): Color;
function RGBA(r,g,b: byte; a: real): Color;
function clRandom: Color;

Управление окном

Окно Window имеет следующие свойства:

Window.Left − отступ от левого края экрана;
Window.Top − отступ от верхнего края экрана;
Window.Width − ширина окна;
Window.Height − высота окна;
Window.Title − заголовок окна.

Кроме того, окно Window имеет следующие методы:

Window.SetSize(w,h) − установить размер внутренней (клиентской) части окна;
Window.SetPos(l,t) − установить позицию левого верхнего края окна;
Window.Close − закрыть окно;
Window.Maximize − максимизировать окно;
Window.Minimize − минимизировать окно.

Обратим внимание, что нет возможности вывода (оператор writeln используется для генерации графических команд).

Примеры программ

Приведем несколько примеров программ.

Новости

30.08.17. Вышла версия 3.3. Новые модули Graph3D и GraphWPF

19.01.17. Добавлена операция безопасного среза: a?[-1:5:2]

29.08.16. Вышла версия 3.2. Реализован оператор yield.

12.02.16. Вышла версия 3.1. Добавлены кортежи в стиле (a,b) и кортежное присваивание (a,b) := (b,a)

Случайная программа

// Корни квадратного уравнения
// Уровень сложности: 0
var a,b,c: real;
    x1,x2: real;
    
begin
  readln(a,b,c);
  
  var D := b*b - 4*a*c;
  if D<0 then
    writeln('Корней нет')
  else if D=0 then
  begin
    x1 := -b/2/a;
    writeln('x1=x2=',x1);
  end
  else
  begin
    x1 := (-b-sqrt(D))/2/a;
    x2 := (-b+sqrt(D))/2/a;
    writeln('x1=',x1,' x2=',x2);
  end;
end.