Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Дисциплины:
2018-01-29 | 278 |
5.00
из
|
Заказать работу |
|
|
DrawRectangle(X1,Y1, X2,Y2); | Контур прямоугольника рисуется текущим пером. Внутренность прямоугольника не закрашивается |
FillRectangle(X1,Y1, X2,Y2); | Внутренность прямоугольника закрашивается текущей кистью. Контур прямоугольника не рисуется |
Rectangle(X1,Y1, X2,Y2); | Контур прямоугольника рисуется текущим пером. Внутренность прямоугольника закрашивается текущей кистью. |
Пример 12. Задать квадратное графическое окно, окрасить его в красный цвет, нарисовать в центре окна чёрный квадрат.
Uses GraphABC; //подключение модуля
begin //начало программы
InitWindow(450,10,500,500,clRed); // отступы, размеры и цвет окна
SetWindowCaption('Чёрный квадрат в красном окне'); //заголовок окна
SetBrushColor(clBlack); //Цвет кисти - чёрный
FillRectangle(100,100,400,400); //закрашенный кистью прямоугольник
end.
Пояснение.
В разделе Uses программы подключен модуль GraphABC.
Процедура InitWindow(450,10,500,500,clRed);задаёт отступы окна 450 и 10 пикселов, задаёт размер окна - 500 × 500 пикселови окрашиваетокно в красный цвет.
Процедура SetWindowCaption ('Чёрный квадрат в красном окне'); задаёт заголовок графического окна.
Процедура SetBrushColor(clBlack);делает цвет кисти чёрным для закраски квадрата.
В центре экрана рисуется чёрный квадрат: FillRectangle(100,100,400,400);.
Пример 13. Прямоугольники разных цветов и прозрачности.
Uses GraphABC;
Begin
Window.Caption:= 'Прозрачные прямоугольники';
Brush.Color:= clRed; //красный
FillRectangle(50,50,100,Window.Height - 50);
Brush.Color:= clGreen; //зелёный
FillRectangle(150,50,200,Window.Height - 50);
Brush.Color:= clBlue; //синий
FillRectangle(250,50,300,Window.Height - 50);
Brush.Color:= ARGB(127,255,0,0); //красный, прозрачность 127
FillRectangle(20,100,420,150);
Brush.Color:= ARGB(63,0,255,0); //зелёный, прозрачность 63
FillRectangle(20,200,420,250);
Brush.Color:= ARGB(31,0,0,255); //синий, прозрачность 31
FillRectangle(20,300,420,350);
End.
Шрифт
Вывод текста осуществляется текущим шрифтом. Для работы с текущим шрифтом используется объект Font (шрифт). Font имеет ряд свойств. Среди них:
|
- Color – цвет шрифта (по умолчанию - clBlack);
- Style – стиль шрифта (по умолчанию – fsNormal);
- Size – размер шрифта в пунктах (по умолчанию – 10 пунктов);
Подложка текста имеет цвет Brush.Color( цвет кисти).
Стили шрифта
fsNormal – обычный;
fsBold – жирный;
fsItalic – наклонный;
fsBoldItalic – жирный наклонный;
fsUnderline – подчеркнутый;
fsBoldUnderline – жирный подчеркнутый;
fsItalicUnderline – наклонный подчеркнутый;
fsBoldItalicUnderline – жирный наклонный подчеркнутый.
Задание свойств шрифта.
Font.Color:= clRandom; { цвет шрифта - случайный }
Font.Style:= fsItalic; { стиль шрифта - наклонный }
Font.Size:= 12 { размер шрифта – 12 пунктов }
Такого же результата можно достичь, используя следующие процедуры:
SetFontColor(clRandom); { цвет шрифта - случайный }
SetFontStyle(fsItalic); { стиль шрифта - наклонный }
SetFontSize(12); { размер шрифта – 12 пунктов }
Пример 14. Ввести с клавиатуры вещественное число Х и вычислить значение Y=2X. Значения X и Y вывести в графическом окне.
Uses GraphABC;//подключение модуля
Var X, Y: Real;
Begin //начало программы
InitWindow(450,10,800,600,clSilver);// отступы, размеры и серебряный цвет окна
SetBrushColor(clWhite); //цвет кисти - белый
FillRectangle(50,50,750,550); //прямоугольник, закрашенный белой кистью
SetFontColor(clNavy); //цвет шрифта - тёмно-синий
SetFontSize(18); //размер шрифта - 18
SetFontStyle(fsBoldItalic); //стиль шрифта – жирный наклонный
TextOut(100,100,'Введите значение Х'); //вывод приглашения
ReadLn(X); //ввод значения Х
TextOut(100,130,'Вы ввели Х='); //вывод текста
TextOut(250,130,X); //вывод Х в ту же строку, правее
Y:= 2*X; //вычисление Y
TextOut(100,180,'Ответ: Y = 2X ='); //вывод текста
TextOut(310,180,Y); //вывод Y в ту же строку, правее
end.
Пример 15. Нарисовать на экране Российский флаг. Внизу под флагом написать слово «РОССИЯ».
Uses GraphABC; //подключение модуля
begin //начало программы
InitWindow(450,10,800,600,clLightGray); // отступы, размеры и цвет окна
SetWindowCaption('Российский флаг'); //заголовок окна
SetBrushColor(clWhite); //цвет кисти - белый
FillRectangle(150,150,650,250); //закрашенный кистью прямоугольник
SetBrushColor(clBlue); //цвет кисти - синий
|
FillRectangle(150,250,650,350); //закрашенный кистью прямоугольник
SetBrushColor(clRed); //цвет кисти - красный
FillRectangle(150,350,650,450); //закрашенный кистью прямоугольник
SetBrushColor(clLightGray); //цвет кисти – серый (подложка под текст)
SetFontSize(66); //размер шрифта - 66
SetFontStyle(fsBoldItalic); //стиль шрифта – жирный наклонный
TextOut(200,480,'РОССИЯ'); //вывод слова РОССИЯ из точки (200,480)
end. //конец программы
Пояснение.
Создается графическое окно с заголовком 'Российский флаг'размером 800х600.
Окно окрашивается в светло-серый цвет.
Последовательно рисуются 3 прямоугольника: белого цвета, синего цвета, красного цвета друг под другом.
Под флагом выводится надпись'РОССИЯ'шрифтом размера 66 пунктов.
Часть II.
Следующие примеры рассчитаны на знание оператора цикла
Пример 1. Работа с цветом и пером.
Хотим пересмотреть все возможные оттенки цвета Red. Нарисуем слева направо
256 вертикальных отрезков с нарастающей интенсивностью красного.
Uses GraphABC; // подключение модуля GraphABC
Var Red, // Red - интенсивность красного
h:Integer; // h – отступ вертикали от левого края окна
begin // начало программы
Window.Caption:='Красный цвет от 0 до 255';// заголовок окна
For Red:=0 To 255 Do // Red - составляющая красного от 0 до 255
begin // начало тела цикла
Pen.Color:=RGB(Red,0,0); // цвет пера задаём равным Red
Line(h,0, h,480); // рисуем вертикальный отрезок от h,0)до(h,480)
h:= h+1; // сдвигаемся на 1 пиксел вправо
end; // конец цикла
end. // конец программы
Пример 2. Сначала хаотично падают в окно 99 прямоугольников, нарисованных пером, но не закрашенных (DrawRectangle). Затем хаотично падают в окно 99 прямоугольников, закрашенных кистью, но не обведённых пером (FillRectangle). Цвет пера, кисти, а также размер и положение прямоугольников – случайны.
Uses GraphABC;
Var x, y, i: integer;
Begin
Window.Caption:= 'DrawRectangle и FillRectangle';
For i:= 1 to 99 do
Begin
Pen.Color:= clRandom;
x:= Random(Window.Width-100);
y:= Random(Window.Height-100);
DrawRectangle(x,y,x+Random(100),y+Random(100));
Sleep(30);
end;
for i:= 1 to 99 do
Begin
Brush.Color:=clRandom;
x:= Random(Window.Width-100);
y:= Random(Window.Height-100);
FillRectangle(x,y,x+Random(100),y+Random(100));
Sleep(30);
end;
end.
Пример 3. Программа «Крупа». Сто тысяч и тридцать три пиксела случайного цвета рассыпаются по окну. Затем случайным цветом в окне выводится текст «PascalABC.NET”.
Uses GraphABC; //подключение модуля
Var i:integer; //объявление параметра цикла
begin //начало программы
Window.Caption:='Крупа'; //заголовок окна
For i:=1 to 100033 do //сто тысяч тридцать три пиксела
SetPixel(Random(Window.Width),Random(Window.Height),clRandom);
|
Font.Style:= fsBoldItalic; //стильшрифта - жирныйнаклонный
Font.Size:= 24; //задали размер шрифта - 24
Font.Color:= clRandom; //задали случайный цвет текста
brush.Color:=ARGB(0,0,0,0); //задали прозрачную подложку текста
TextOut(200,220,'PascalABC.NET'); //вывод текста из точки (200,220)
end.
Пример 4. Программа «Долой прозрачность». Круги случайного цвета и размера с прозрачностью от 0 до 255 рассыпаются в окне.
Uses GraphABC;
Var Transparency: integer;
Begin
randomize;
for Transparency:=0 to 255 do //прозрачность – параметр цикла
Begin
Brush.Color:=ARGB(Transparency,Random(256),Random(256),Random(256));
FillCircle(Random(Window.Width),Random(Window.Height),Random(20,60));
sleep(10);
end;
end.
Пример 5. Демонстрация работы со шрифтами.
Uses GraphABC; //подключение модуля
Var i: integer; //объявление переменных
begin //начало программы
Window.Caption:= 'Шрифты'; //заголовок окна
Font.Style:= fsBoldItalic; //стиль шрифта - жирный наклонный
For i:=10 to 17 do //параметр цикла - размер шрифта от 10 до 17
begin //начало тела цикла
Font.Size:= i; //задали размер шрифта
Font.Color:= clRandom; //задали случайный цвет
WriteLn('PascalABC.NET'); //вывели текст
end; //конец цикла
readln; //останов программы до нажатия Enter
Font.Style:= fsBoldUnderline;
For i:=10 to 17 do
Begin
Font.Size:= i;
Font.Color:= clRandom;
WriteLn('PascalABC.NET');
end;
end. //конец программы
Пример 6. Имитация кругов на воде от капель дождя.
Uses GraphABC;
Procedure Kaplia(x0,y0: integer); //заголовок процедуры
Var i: integer; //локальная переменная
Begin
for i:=1 to 63 do //вцикле – 63 итерации
Begin
Pen.Color:= RGB(i*4,i*4,i*4); //перо – серое от тёмного к светлому
Circle(x0,y0,i); //стопка из 63-х кругов с растущим радиусом
Sleep(10);
end;
end;
BEGIN
Window.Caption:= 'Капли дождя'; //заголовок окна
SetWindowSize(800,600); //размер окна
Randomize; //инициализация ГСЧ
While True do //бесконечный цикл
Kaplia(Random(800),random(600)); //вызов процедуры
END.
Пояснение.
Эффект капли реализован в процедуре Kaplia в цикле с параметром i, возрастающем от 1 до 63.
- Оператор Pen.Color:= RGB(i*4,i*4,i*4);задаёт текущий цвет пера. Это серый цвет, его интенсивность в цикле меняется от тёмного к светлому.
- Оператор Circle(x0,y0,i); создает «стопку» из 63-х концентрических кругов. Радиус кругов в цикле растёт от 1 до 63, поэтому каждый следующий круг закрывает собой все предыдущие.
- Каждый круг имеет контур серого цвета– и каждый следующий круг имеет контур светлее, чем предыдущие. Чем больше диаметр круга, тем светлей его контур. Последний 63-й круг почти не виден на белом фоне окна.
|
- Все круги закрашиваются белой кистью (по умолчанию).
Таким образом, каждый вызов процедуры имитирует расходящийся круг на воде от упавшей капли.
В основной программе «дождь» реализован бесконечным циклом, т.к. условие продолжения цикла – всегда True:
While True do
Kaplia(Random(800),random(600));
В процедуру передаются два параметра, задающие центр капли. Координаты центра капли вычисляются как случайные числа так, чтобы центр не вышел за пределы окна.
Пример 7. Мульфильм “Паровоз”.
Program Parovoz;
Uses GraphABC;
Const
dx = 10; //перемещение за одну итерацию
N = WindowWidth div dx; //количество итераций
t = 3000 div N; //пауза в одной итерации
//чтобы цикл длился 3 секунды
Var
i, //параметр цикла для паровоза
j: Integer; //параметр цикла для дыма
Begin
InitWindow(450,10,800,600,clLightGray); // отступы, размеры и цвет окна
SetWindowCaption('Паровоз'); // текст в заголовке окна
SetBrushStyle(bsHatch); //кисть штриховая
SetBrushHatch(bhBackwardDiagonal); //со стилем штриховки – косой штрих
SetHatchBrushBackgroundColor(clGreen); //с зелёным цветом заднего плана
FillRectangle(0, 550, 800, 600); //рисуем траву
SetBrushStyle(bsSolid); //кисть сплошная
SetBrushColor(clSkyBlue); //кисть голубого цвета
FillRectangle(0, 0, 800, 100); //рисуем небо
SetBrushColor(clYellow); //кисть жёлтого цвета
FillCircle(600, 50, 30); //рисуем солнце
For i:= 0 to N do //движение паровоза
Begin
SetBrushColor(clMaroon); //кисть красно-коричневого цвета
FillRectangle(i*dx, 390, 180+i*dx, 490); //корпус паровоза
FillRectangle(i*dx, 350, 40+i*dx, 390); //труба паровоза
SetBrushColor(clBlack); //кисть чёрного цвета
FillCircle(30+i*dx, 520, 30); //заднее колесо
FillCircle(150+i*dx, 520, 30); //переднее колесо
SetPenColor(clWhite); //кисть белого цвета
For j:= 1 to 4 do //рисуем 4 кольца дыма
DrawEllipse(i*dx, 330-j*15, 40+i*dx, 350-j*15);
sleep(t); //пауза
SetBrushColor(clLightGray); //кисть цвета фона окна
FillRectangle(i*dx, 260, 180+i*dx, 550); //закрыли паровоз
end;
end.
Пример 8а. Анимация. Мерцание.
Uses GraphABC;
Var x: integer;
Begin
Window.Caption:= 'Эффект мерцания';
Brush.Color:= clGreen; //взяли зелёную кисть
For x:= 70 to 500 do //поехали
Begin
ClearWindow(clWhite); //очистили экран белым цветом
Circle(x,200,50); //нарисовали круг с центром (x,200)
Sleep(10); //пауза
end;
end.
Пояснение.
В цикле окружность перемещается вправо, т.к. координата X центра круга увеличивается, являясь параметром восходящего цикла.
При движении сильно проявляется эффект мерцания.
Чтобы избежать мерцания, можно воспользоваться процедурами LockDrawing и Redraw.
Основная идея состоит в следующем:
- вызвав LockDrawing, отключим рисование на экране,– тогда рисование будет осуществляться только во внеэкранном буфере
- далее будем формировать новый кадр изображения и, когда он сформирован, выводить его на экран целиком, вызывая процедуру Redraw, которая перерисовывает всё графическое окно
Данный метод используется для ускорения анимации и создания анимации без мерцания.
|
Пример 8б. Анимация без мерцания.
Uses GraphABC;
Var x: integer;
Begin
Window.Caption:= 'Анимация без мерцания';
Brush.Color:= clGreen;
LockDrawing; //отключаем рисование в окне
For x:= 70 to 500 do
Begin
ClearWindow(clWhite);
Circle(x,200,50);
Redraw; //перерисовываем окно из внеэранного буфера
Sleep(10);
end;
end.
ПРИЛОЖЕНИЕ
Основные подпрограммы модуля GraphABC
InitWindow(l,t,w,h,Color); | Устанавливает отступы, размеры и цвет графического окна |
ClearWindow; | Очищает графическое окно и закрашивает белым цветом |
ClearWindow(Сolor); | Очищает графическое окно и закрашивает цветом Сolor |
Sleep(T); | Пауза длительностью T миллисекунд |
PutPixel(x,y, Color); | Пиксел с координатами (x, y) закрашивается цветом Color |
SetBrushColor(Сolor); | Устанавливает цвет кисти Сolor |
SetPenColor(Color); | Устанавливает цвет пера Сolor |
SetPenWidth(Width); | Устанавливает толщину пера в пикселах |
MoveTo(x,y); | Перо устанавливается в точку (x,y) |
LineTo(x,y); | Рисуется отрезок от текущей позиции пера до точки (x,y). Текущая позиция переносится в точку (x,y). |
Line(x1,y1,x2,y2); | Рисуется отрезок от точки (x1,y1) до точки (x2,y2). Положение пера не изменяется. |
DrawCircle(x,y,r); | Контур круга с центром (x,y) и радиусом r рисуется текущим пером. Внутренность круга не закрашивается |
FillCircle(x,y,r); | Внутренность круга с центром (x,y) и радиусом r закрашивается текущей кистью. Контур круга не рисуется. |
Circle(x,y,r); | Контур круга с центром (x,y) и радиусом r рисуется текущим пером. Внутренность круга закрашивается текущей кистью. |
DrawEllipse(x1,y1,x2,y2); | Эллипс, вписанный в прямоугольник с координатами противоположных вершин (x1,y1)и (x2,y2) рисуется текущим пером. Внутренность эллипса не закрашивается. (Прямоугольник не рисуется.) |
DrawRectangle(x1,y1,x2,y2); | Контур прямоугольника с координатами противоположных вершин (x1,y1)и (x2,y2) рисуется текущим пером. Внутренность прямоугольника не закрашивается |
FillRectangle(x1,y1,x2,y2); | Внутренность прямоугольника с координатами противоположных вершин (x1,y1) и (x2,y2)закрашивается текущей кистью. Контур прямоугольника не рисуется. |
Rectangle(x1,y1,x2,y2); | Контур прямоугольника с координатами противоположных вершин (x1,y1)и (x2,y2) рисуется текущим пером. Внутренность прямоугольника закрашивается текущей кистью. |
FloodFill(x,y, Color); | Закрашивает замкнутую область одного цвета цветом Color, начиная с точки (x,y), находящейся внутри замкнутой области. |
SetFontColor(Color); | Устанавливает цвет шрифта |
SetFontSize(Size); | Устанавливает размер шрифта в пунктах |
TextOut(x,y,Текст); | Выводит Текст начиная с точки с координатами (x,y). В качестве Текста можно передавать значение любого типа. |
|
|
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!