ВВЕРХ
ВНИЗ

Процедуры RoundRect, DrawRoundRect, FillRoundRect

Снова здравствуйте, посетители сайта о программировании на паскале для начинающих! На этой странице мы рассмотрим построение прямоугольников со скругленными краями с помощью процедур RoundRect, DrawRoundRect и FillRoundRect, в отличие от предыдущего материала, где мы разобрали построение обычных прямоугольников без скругления.

В зависимости от того какой прямоугольник со скругленными краями вам нужен – залитый с границей, незалитый с границей или залитый без границы, – вы можете использовать соответственно процедуры RoundRect, DrawRoundRect или FillRoundRect, поскольку в разных задачах свои требования. Но обо всем по порядку, и начнем с определения первой подпрограммы.

Процедура RoundRect

procedure RoundRect(x1,y1,x2,y2,w,h: integer);

   — Рисует заполненный прямоугольник со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев

Прямоугольник, нарисованный с помощью RoundRect, имеет границу и заливку, поэтому границе можно придать цвет и толщину, а область самого прямоугольника разукрасить в определенный цвет. Вот как это делать в программе.

Код PascalABC, PascalABC.Net
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
uses
  GraphABC;

var
  x1, y1, x2, y2, w, h: integer;

begin
  SetPenWidth(5); //толщина границы прямоугольника
  SetPenColor(clRed); //цвет границы
  SetBrushColor(clYellow); //цвет заливки прямоугольника
  x1 := 50; y1 := 50; //координаты левой верхней вершины
  x2 := 300; y2 := 250; //координаты правой нижней вершины
  w := 50; h := 50; //ширина и высота эллипса для скругления краев
  RoundRect(x1, y1, x2, y2, w, h) { <-- рисуем заполненный 
  прямоугольник со скругленными краями с координатами 
  противоположных вершин (x1, y1) и (x2, y2) }
end.

Заполненный прямоугольник с границей со скругленными краями в Pascal

Причем для простого вывода прямоугольника использовать переменные x1, y1, x2, y2, w, h не обязательно – вместо них можно вставить сами их значения в процедуру.

Процедура DrawRoundRect

procedure DrawRoundRect(x1,y1,x2,y2,w,h: integer);

   — Рисует границу прямоугольника со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев

Эта процедура отсутствует в простом PascalABC, поэтому будем запускать среду PascalABC.Net. Обратим внимание, что DrawRoundRect рисует только границу скругленного прямоугольника, но не заливает его, поэтому использовать кисть Brush для заливки не имеет смысла, поскольку она не сработает.

Код PascalABC.Net
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
uses
  GraphABC;

var
  x1, y1, x2, y2, w, h: integer;

begin
  SetPenWidth(3); //толщина линии
  SetPenColor(clGreen); //цвет линии
  x1 := 50; y1 := 50; //координаты левой верхней вершины
  x2 := 300; y2 := 250; //координаты правой нижней вершины
  w := 50; h := 50; //ширина и высота эллипса для скругления краев
  DrawRoundRect(x1, y1, x2, y2, w, h) { <-- Рисуем границу 
  прямоугольника со скругленными краями с координатами 
  противоположных вершин (x1, y1) и (x2, y2) }
end.

Граница прямоугольника со скругленными краями в Pascal

Процедура FillRoundRect

procedure FillRoundRect(x1,y1,x2,y2,w,h: integer);

   — Заполняет внутренность прямоугольника со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев

Последняя процерура FillRoundRect выводит на экран заполненный прямоугольник со скругленными краями, но без границы, поэтому в определении и сказано, что не рисует, а заполняет внутренность. В этом случае перо Pen использовать для толщины и цвета границы не имеет смысла, ведь никакой границы нет.

Код PascalABC.Net
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
uses
  GraphABC;

var
  x1, y1, x2, y2, w, h: integer;

begin
  SetBrushColor(clBrown); //цвет заливки прямоугольника
  x1 := 50; y1 := 50; //координаты левой верхней вершины
  x2 := 300; y2 := 250; //координаты правой нижней вершины
  w := 50; h := 50; //ширина и высота эллипса для скругления краев
  FillRoundRect(x1, y1, x2, y2, w, h) { <-- заполняем внутренность 
  прямоугольника со скругленными краями с координатами 
  противоположных вершин (x1, y1) и (x2, y2) }
end.

Заполняем внутренность прямоугольника со скругленными краями в Pascal

Вот похожие темы:

   Процедуры Circle, DrawCircle, FillCircle
   Процедуры Ellipse, DrawEllipse, FillEllipse
   Rectangle, DrawRectangle, FillRect/FillRectangle

На этом пока все. А пока можете посмотреть онлайн сервис для легкой сдачи отчетности medoc online, который помогает отправлять отчеты из браузера в режиме онлайн.

Позже я добавлю сюда некоторые интересные задачи с применением скругленных прямоугольников. Если у вас есть какие-то идеи, то пишите в комментариях.


Яндекс.Метрика