|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[29] if i<6 then begin x1:=90*i; else begin x1:=90*(i-6); x2:=x1+70; Bar3d(x1, y1, x2, y2, 10, TopOn) end; ReadLn; CloseGraph y1:=150 end y1:=270 end; y2:=y1+80; Заполняя не черный экран орнаментом Red 50, можно получить новые цвета фона. Выбранным из стандартных или определенным орнаментом можно заполнить любую замкнутую область с границей цвета "N" оператором FloodFill(X, Y, N); Заполнение начинает производится из точки X, Y и ограничивается при достижении границы цвета с номером "N". Например: Rectangle(x1, y1, x2, y2); FloodFill((x1+x2) div 2, (y1+y2) div 2, Red); Если область не замкнута или цвет границы не равен "N", то заполнение "разольется" по экрану. Практическое задание N 1. 54 1.С использованием оператора цикла нарисовать на экране 12 одинаковых заполненных различными стандартными орнаментами фигур ( в 3 ряда по 4 фигуры). По нажатию клавиши должен меняться вариант фигуры: 1. 1 Прямоугольник,2. 1 Эллипс, 1. 2 Параллелепипед.2. 2 Круг. Выполнить задание с использованием процедур рисования фигур без автоматического заполнения, а затем заполнить их. 2.Нарисовать 5 вложенных прямоугольников с увеличением размера на 20 пикселов в каждом направлении. Стиль заполнения для каждой фигуры определить буквами Вашего имени. 3.Нарисовать 5 соосных кругов разного цвета с уменьшением радиуса на 10 пикселов. Стиль заполнения для каждого круга определить его номером, т. е. цифрами 1, 2, 3, 4, 5. 4.Определить три орнамента заполнения: "снежинка", "иголки" с наклоном влево и вправо. Нарисовать из треугольников пять елок и заполнить их орнаментом "иголки". Заполнить экран орнаментом " снежинка". 5.Создать элемент орнамента с единицами (4*4) в центре. Нарисовать на экране картину " ночной город", используя фрагменты " звездного неба" и пять прямоугольников, заполненных орнаментом 4*4 разного цвета. 6.Используя исходные орнаменты из одной линии составить с использованием логических операций орнаменты цифр: 1, 6, 7 и букв: B, F, E. 1. 15. 3. 2. Работа с линиями В графическом режиме курсор невидим, его положение можно определить функциями, возвращающими значения координат: по оси "Х", по оси "Y". Следующие процедуры перемещают курсор без рисования: MoveTo(x, y); MoveRel(dx,dy); -переместить курсор в точку с координатами (x, y), -сместить курсор на расстояние dx, dy от текущего положения. Для построения многоугольников и ломаных линий удобно использовать процедуры: LineTo(x, y); LineRel(dX, dY); провести отрезок прямой линии от текущего положения курсора до точки с координатами X, Y. провести отрезок прямой линии от текущего положения курсора до точки, смещенной на расстояние dX, dY по соответствующим осям. В отличие от процедуры Line(x1, y1, x2, y2); процедуры LineTo(x, y); и LineRel(dX, dY); при своем исполнении перемещают текущий указатель. Пример операторов для построения восьмиугольника: R:=100; { расстояние от вершин до центра xc, yc } xc:= GetMaxX div 2; yc:= GetMaxY div 2 for i:= 1 to 8 do begin alfa:= i * pi/4; x[i]:= xc + round(R * y[i]:= yc + round(R * cos(alfa)) sin(alfa)) { значение угла в рад. } { координаты вершин } MoveTo(x[8], y[8]) for i:= 1 to 8 do LineTo(x[i] { исходная позиция для рисования } y[i]);{ рисование линий } Для отрезков прямых линий и процедур с их использованием можно задать режимы построения прямых линий оператором: SetWriteMode(N); N=0 - замещение линией изображения на экране ( режим CopyPut ) используется по умолчанию, N=1 - изображение комбинируется ( режим XorPut ). Работа функции состоит в изменении согласно логической операции "исключающее ИЛИ" исходного значения цвета пиксела (числа "1" или "0"). Логическая функция Xor, примененная к одной переменной дважды, восстанавливает ее исходное значение: ( J xor I ) xor I = J . Следовательно при повторном проведении линии в режиме XorPut изображение этой линии уничтожается, а цвет пикселов экрана становится исходным. На этом правиле основаны некоторые программы построения движущихся изображений. Пример операторов для рисования движущегося прямоугольника: SetWriteMode(1); a:= 100; b:= 50;{ стороны прямоугольника } x1:= 0; y1:= GetMaxY div 2; N:= GetMaxX - x1 - a;{ N - число перемещений } for i:= 0 to N do begin Rectangle(x1+i, y1, x1+a+i, y1+b); { рисование прямоугольника } delay(10); Rectangle(x1+i,y1,x1+a+i,y1+b); { стирание прямоугольника } end; Практическое задание N 1. 55 1. Составить процедуру рисования N - угольной звезды. В параметры процедуры включить число лучей звезды, радиусы вписанной и описанной окружностей, цвет линий и координаты центра звезды. Перемещать две звезды разного цвета в пределах экрана случайным образом. 2. Составить процедуру рисования N - угольной звезды, где N= 3, 5, 7, ... Операторы рисования имеют вид: M:=N div 2; Moveto(x[1],y[1]); For i:=1 to N do begin j:=(M*i) mod N + 1; LineTo(x[j],y[j])end; Перемещать две звезды разного цвета в пределах экрана. Толщину и форму (стиль) линий отрезков прямых, прямоугольников, окружностей, эллипсов можно задать оператором SetLineStyle(F, P, T); Здесь F - форма линии из стандартного набора BGI: F=0 - сплошная, F=1 - пунктирная, F=2 - штрих-пунктирная, F=3 - штриховая. F=4 - форма линии задается параметром Р. При F<4 значение Р игнорируется. Параметры F, P, T типа Word. Стиль линии Р - число, двоичное представление которого отображает заполнение линии длиной 16 пикселов. Если разряд числа равен 1, то пиксел высвечивается, 0 - не высвечивается. Удобно использовать шестнадцатеричные числа. Например: P = $35F1 = 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 ( двоичное ) отобразит стиль: Можно использовать десятичную форму записи значения параметра "Р", где 0<= P <= 65535= 216- 1 . T - толщина линии может принимать два значения: T= 1 - тонкая (1 пиксел), T= 3 - толстая (3 пиксела). Например, операторы: SetLineStyle(4, $5555, 3); Line(x1, y1, x2, y2); определяют толстую мелким пунктиром линию. Практическое задание N 1. 55 1. Вывести на экран горизонтальные толстые линии с двоичным представлением: |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||