Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Работа с цветом. Заливка. Стиль линийи заливки

Вложенные операторы if. Сложное условие в операторе if. Логические операции | Символьный тип данныхChar | Оператор переходаGOTO. Цикл. Метки | Оператор цикла repeat | Отличия операторов repeat и while | Глава 7. Типичные маленькие программы | Вложенные циклы | Поиск максимального из чисел | Простейшие процедуры | Переключение между текстовым и графическим режимами |


Читайте также:
  1. A. Работа была выполнена к 6 часам. \ Жұмыс сағат 6-ға таман орындалды.
  2. FSA - Серийный или доработанный легковой автомобиль отечественного или иностранного производства без ограничения. Объем двигателя: от 2000 до 3000 куб.см. включительно.
  3. FSB – Серийный или доработанный серийный легковой автомобиль отечественного или иностранного производства без ограничения. Объём двигателя: от 2300 до 3500 куб.см. включительно.
  4. I РАБОТА И ОТРЕЧЕНИЕ.
  5. II. Самостоятельная работа (повторение) по вопросам темы № 11 «Множественность преступлений».
  6. Run on - работать на
  7. SW 5. ВОЛЬНЫЙ СТИЛЬ

Сначала поговорим о стиле линий. Если вы хотите, чтобы линии, которыми чертятся фигуры, были потолще, используйте процедуру SetLineStyle. Вот ее вызов - SetLineStyle(0, 0, ThickWidth). Это приказ отныне рисовать линии толстыми. Если вы хотите вернуться к тонким линиям, напишите SetLineStyle(0, 0, NormWidth).

Первый параметр процедуры SetLineStyle управляет стилем прямых отрезков (штриховые, пунктирные и др.). Попробуйте вместо 0 написать 1, 2 или 3 и посмотрите, что получится.

Второго параметра касаться не будем.

 

А теперь поговорим о цвете. Если цвет точки задается непосредственно в вызове процедуры, которая рисует точку (PutPixel), то цвета многих других фигур задаются по-иному. Делает это специальная процедура SetColor. Пример: SetColor(Yellow) приказывает компьютеру отныне рисовать фигуры желтым цветом.

Вот поясняющий фрагмент:

Circle(100,100,20); {окружность белая и тонкая, так как по умолчанию

{Паскаль все рисует белым цветом тонкими линиями}

SetColor(Yellow);

Circle(150,100,20); {желтая тонкая окружность }

SetLineStyle(0, 0, ThickWidth);

Circle(200,100,20); {желтая толстая окружность}

SetColor(Blue);

SetLineStyle(0, 0, NormWidth);

Circle(250,100,20); {синяя тонкая окружность}

Работая в Паскале, вы можете покрасить любым цветом (залить краской) любую область экрана внутри замкнутого контура. Пусть вы нарисовали такую картинку:

 

После этого вы можете ее покрасить, например, вот так:

Как красить? Начнем с процедуры SetFillStyle. Подобно тому, как процедура SetColor сама ничего не рисует, а только устанавливает цвет линий на будущее, процедура SetFillStyle сама ничего не заливает, а устанавливает цвет и стиль заливкина будущее. Например, SetFillStyle(1, Green) устанавливает заливку зеленым цветом. На единичку пока не обращаем внимания.

Сам процесс заливкивызывает процедура FloodFill. Например, FloodFill(200, 150, Blue) вызывает следующие действия Паскаля:

В точке экрана с координатами х=200 и у=150 встает “маляр с ведром краски”, цвет которой был указан в обращении к процедуре SetFillStyle (в нашем примере - зеленый), и начинает эту краску разливать вокруг себя. Краска свободно растекается по экрану и преградой для нее становится только линия, имеющая цвет, указанный в обращении к процедуре FloodFill, то есть синий. Очевидно, если синий контур не будет замкнут вокруг “маляра”, то краска прольется на весь экран.

Пример: Следующий фрагмент нарисует желтый квадрат и зальет его красным цветом:

SetColor(Yellow);

SetFillStyle(1, Red);

Rectangle(200,50,300,150);

FloodFill(250, 100, Yellow)

А теперь попробуем поставить “маляра” вне квадрата, записав в нашем фрагменте вместо FloodFill(250, 100, Yellow) например, FloodFill(250, 200, Yellow). Теперь красной будет вся поверхность экрана, кроме области внутри квадрата.

Распространенная ошибка новичков - на вопрос о том, каким цветом будет красить оператор FloodFill(250, 100, Yellow), они отвечают “Желтым”, хотя нужно отвечать “Не знаю, надо посмотреть в SetFillStyle”.

 

Напомним, что в нашем случае только желтые линии и области являются преградой для красной краски. Например, попытаемся покрасить желтой краской маленький прямоугольник, помеченный единичкой, полученный пересечением больших красного и синего прямоугольников:

 

 

Для этого поместим “маляра” внутрь этого прямоугольника и используем операторы SetFillStyle(1, Yellow) и FloodFill(¼, ¼,Blue). Мы получим следующую картину:

Очевидно, при помощи FloodFill нужный прямоугольник закрасить невозможно, так как он ограничен линиями разного цвета.

 

Заливку можно делать не только сплошной, но и по-разному заштрихованной. Для этого вместо единички в обращении к процедуре SetFillStyle попробуйте другие целые числа - 2, 3 и др.

 

Задание 68: Усовершенствуйте снеговика из 9.3. Он должен стать таким - с красным носом, красными губами, желтой шапкой и толстым синим посохом. При помощи оператора WriteLn сделайте надпись “Это снеговик”.


Дата добавления: 2015-11-14; просмотров: 41 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Рисуем простейшие фигуры| Используем в рисовании переменные величины

mybiblioteka.su - 2015-2024 год. (0.006 сек.)