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

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

Введение

В 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 используется для генерации графических команд).

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

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

Новости

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

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

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

31.12.15. Версия 3.0.0.1128. Реализованы обобщенные методы расширения для операций

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

// Минимальный в массиве и его индекс
// Уровень сложности: 1
function MinInd(a: array of real): integer;
begin
  var min := a[0];
  Result := 0;
  for var i:=1 to a.Length-1 do
    if a[i]<min then
    begin
      min := a[i];
      Result := i;
    end;
end;


const n = 20;

begin
  var a := ArrRandomReal(n);
  Writeln('Исходный массив: ');
  a.Println;

  var ind := MinInd(a);
  Writeln('min=',a[ind],' индекс=',ind);
end.