Процедуры Circle, DrawCircle, FillCircle
Здравствуйте, читатели сайта progmatem.ru о программировании на паскале. На этой странице рассмотрим следующие три процедуры графического модуля GraphABC – Circle, DrawCircle, FillCircle, причем последние две в среде PascalABC отсутствуют. Но обо всем по порядку, и начнем с определения подпрограммы Circle(x,y,r)
.
Процедура Circle
✎ procedure Circle(x,y,r: integer);
— Рисует заполненную окружность с центром (x, y) и радиусом r
Цвет линии окружности задается с помощью SetPenColor(c)
, ширина – SetPenWidth(w)
, цвет области круга – SetBrushColor(c)
. В PascalABC.Net параметр с
имеет тип Color, в PascalABC – тип ColorType. Ширина, или толщина пера w
– целое положительное число.
Вот как выглядит это на примере:
|
Важное замечание: если не устанавливать вручную свойства границы и области окружности, то задействуются умолчания: цвет границы – черный, толщирна пера – 1px, цвет области – белый.
|
Процедура DrawCircle
✎ procedure DrawCircle(x,y,r: integer);
— Рисует окружность с центром (x, y) и радиусом r
Отличие процедуры DrawCircle от Circle в том, что первая рисует только линию окружности, не заполняя внутренней части. То есть попросту говоря – окружность пустая внутри. Напишем простенькую программу.
|
А теперь продемонстрируем на примере, что процедура DrawCircle(x,y,r)
действительно рисует незаполненную окружность в PascalABC.Net. Сначала программа рисут окружность Circle (строка 8 кода ниже), делая паузу на 2 секунды прорцедурой sleep(2000)
в следующей строке. Наконец, в последней строке вызываем процедуру DrawCircle для создания незаполненной окружности. Запустите программу в PascalABC.Net и посмотрите результат:
|
Аналогичный вывод мы сделали на странице Процедуры DrawPolygon и FillPolygon по отношению к указанным подпрограммам, где демонстрировали использование закрашенного (заполненного) многоугольника Polygon и просто ломаной DrawPolygon. Здесь необходимо запомнить правило:
✎ Если в PascalABC.Net процедура графического модуля используется с приставкой Draw, то кисть Brush для закрашивания области здесь не используется. Это ясно из того, что одно из значений английского слова "draw" является "рисовать", то есть просто рисовать линию.
Процедура FillCircle
Наконец, подходим к последней процедуре FillCircle(...)
этой группы подпрограмм, относящихся к окружности и кругу. В чем её отличие от предыдущих Circle и DrawCircle? Английское слово "fill" означает "заполнять", поэтому можно предположить, что данная процедура заполняет (закрашивает, зарисовывает) простаранство круга. Действительно:
✎ procedure FillCircle(x,y,r: integer);
— Заполняет внутренность окружности с центром (x, y) и радиусом r
Приведем пример с окружностью закрашенной в розовый цвет. Вот программа:
|
Особенность этой процедуры в том, что залитый таким образом круг не имеет границы, а поэтому перо Pen
использовать не имеет смысла. Действительно, в следующей программе устанавливая толщину и цвет пера (5 и 6 строка кода), видим, что жёлтый круг все равно остается без границы:
|
Вобщем, если нужно нарисовать круг и сразу его закрасить (залить), то используем Circle; если инужна окружность, то DrawCircle; если закрашенный круг без границ, то применяем FillCircle.
На этом все. Если есть вопросы или пожелания, то пишите в комментариях.