Книжка Хабы (970988), страница 11
Текст из файла (страница 11)
Используя перечисленные процедуры, надо быть внимательным: они позволяют рисовать прямоугольники, эллипсы лишь частного положения: со сторонами (осями), параллельными координатным осям. Фигуры произвольного положения они нарисовать не позволяют.
1.4.Вывод текста
Процедура OutText(TextString:string); выводит строку текста TextString, начиная с текущей позиции курсора. Если строка текста слишком длинная (не умещается в поле вывода), то она отсекается по границе поля вывода. Если используется загружаемый по умолчанию шрифт, то при слишком длинной строке текст вообще не выводится на экран.
Процедура OutTextXY(x,y:integer; TextString:string); выводит строку текста TextString, начиная с точки, имеющей координаты (x,y). В случае слишком длинной строки отсечение текста производится, как и в предыдущем случае.
Текст выводится текущим типом. Тип выводимого текста (шрифт, его размер, направление выдачи) устанавливается с помощью следующих процедур.
Процедура SetTextStyle(Font:word;Direction:word;CharSize:word); устанавливает текущий тип шрифта, направление выдачи и размер символов. Font - параметр, задающий тип (номер) шрифта; допустимы следующие значения этого параметра, задаваемые одной из установленных констант:
DefaultFont=0 - загружаемый по умолчанию шрифт, каждый символ отображается на экране в прямоугольнике 8*8 точек;
TriplexFont=1 - тройной шрифт;
SmallFont=2 - маленький шрифт;
SansSerifFont=3 - прямой шрифт;
GothicFont=4 - готический шрифт.
Direction - параметр, задающий направление выдачи шрифта. Допустимы следующие значения этого параметра, задаваемые одной из констант:
HorizDir=0 - горизонтальное направление (слева направо);
VertDir=1 - вертикальное направление (снизу вверх).
Параметр CharSize устанавливает размер выводимых символов, значения этого параметра могут лежать в диапазоне 0-30.
При значении CharSize=1 символ выводится в прямоугольнике размером 8*8 точек, при CharSize=2 - в прямоугольнике размером 16*16 точек и т.д. вплоть до 10-кратного увеличения нормального размера.
Шрифты с номерами 1-4 по умолчанию имеют размер CharSize =4, т.е. каждый символ отображается в прямоугольнике 32*32 точки.
Процедура SetUserCharSize(MultX,DivX,MultY,DivY:word);позволяет пользователю устанавливать нестандартную высоту и ширину символов для всех шрифтов, кроме загруженного по умолчанию.
MultX/DivX - отношение, на которое умножается стандартная ширина текущего шрифта;
MultY/DivY - отношение, на которое умножается стандартная высота текущего шрифта.
Вызов процедуры SetUserCharSize должен предшествовать вызову процедуры SetTextStyle.
На практике полезными оказываются следующие две функции:
TextHeight(TextString:string):word;
TextWidth(TextString:string):word;
Первая функция определяет высоту заданного текста в точках растра, вторая - ширину заданного текста. Результат выдается с учетом текущего размера шрифта и множительного коэффициента. Эти функции полезно использовать при выборе интервала между строками, размера заголовка, ширины и высоты поля вывода.
Графические процедуры языка Турбо-Паскаль не в полной мере соответствуют примитивам стандарта GKS.
Примитив ЛОМАНАЯ реализуется рассмотренной процедурой вывода ломаной линии или многократным использованием вывода отрезка прямой в качестве звена ломаной.
Примитив МАРКЕР в Турбо-Паскале отсутствует, он может быть реализован с помощью процедур рисования линий, точек, прямоугольников, т.е. создается самим пользователем.
Примитив ТЕКСТ реализуется в Турбо-Паскале с помощью ряда уже рассмотренных процедур.
Примитив ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ реализуется рассмотренной процедурой вывода многоугольника.
Примитив МАТРИЦА ЯЧЕЕК может быть реализован с помощью многократного применения процедуры рисования закрашенного прямоугольника Bar.
ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА представлен в Турбо-Паскале процедурами вывода окружности, эллипса, дуг окружности и эллипса, кругового и эллиптического секторов.
-
Демонстрационные примеры
Пример 8.1. Нарисовать разными цветами десять концентрических окружностей с общим центром посередине экрана, то есть в точке с графическими координатами (320,240), и описать вокруг них красный прямоугольник.
Program Circle10;
Uses Ctr,Graph;
Var driver, mode, r: integer;
Begin
Clrscr;
Driver := detect;
Initgraph (driver, mode, ‘’);
r := 10; {радиус первой окружности в 10 пикселей}
While r <=100 do
Begin
SetColor (r div 10);
Circle(320,240,r);
R := r +10;
End;
SetColor (red);
RectAngle (220,140,420,340);
Readln;
End.
Пример 8.2. Нарисовать эмблему. В верхней части графического экрана на черном фоне нарисовать голубой квадрат, а в нем – черный вписанный круг, закрашенный желтым цветом. В центре эмблемы черными буквами написать слово «Львов».
Program Emblema;
Uses Crt, Graph;
Var driver, mode, i, x1,y1: integer;
Begin
ClrScr;
Driver := detect;
Initgraph (driver, mode, ‘’);
SetbkColor(0);
SetColor(3);
RectAngle(100,0,300,200);
SetFillStyle(1,3);
FloodFill(200,100,3);
SetColor (14);
Circle(200,100,100);
SetFillStyle(1,14);
FloodFill(200,100,14);
SetColor(0);
Circle(200,100,100);
SetTextStyle(0,0,3);
OutTextxyXY(135,100,’Львов’);
Readln;
end.
3. Задачи, для самостоятельного решения
Задача 1. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: дерево (ствол, ветки), солнце, звезду;
Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 2. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: автомобиль (колеса, корпус), Российский флаг;
Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 3. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: дом (корпус, крыша, окно, дымоход).
Сделать надпись на корпусе дома. Объект разместить в графическом окне втрое меньше рабочего экрана монитора..
Задача 4. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: абстрактные фигуры, в стиле модерн.
Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 5. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: дерево (ствол, ветки) и автомобиль (колеса, корпус);
Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 6. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: дом (корпус, крыша, окно) и луну;
Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 7. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: дерево (ствол, ветки), машина (колеса, корпус), дом (корпус, крыша, окно).
Задача 8. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: треугольник вписанный в окружность радиуса R, вершиной расположенный вниз. Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 9. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: прямоугольник вписанный в квадрат со стороной А.
Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 10. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: круг описывающий квадрат, со стороной А. Круг опирается на меньший круг. Объект разместить в графическом окне втрое меньше рабочего экрана монитора.
Задача 11. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: эллипс вписанный в прямоугольник.
Сделать надпись в эллипсе «Объект». Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 12. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: круг вписанный в равнобедренный треугольник.
Сделать надпись в круге «Солнце». Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 13. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: три круга с центрами, размещенными в вершинах треугольника.
Сделать надпись в круге «Окружности». Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 14. Нарисовать разными цветами десять концентрических окружностей с общим центром в точке экрана с координатами (160,120), и примкнуть к внешней окружности красный прямоугольник, с нижней стороны.
Задача 15. Нарисовать эмблему. В верхней части графического экрана на синем фоне нарисовать черный квадрат, а в нем – черный вписанный круг, закрашенный красным цветом. В центре эмблемы черными буквами написать слово « С Новым годом! ».
Задача 16. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: эллипс вписанный в прямоугольник.
Сделать надпись в эллипсе «Объект ». Объект разместить в графическом окне в двойной рамочке по контуру экрана монитора.
Задача 17. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: абстрактные фигуры, в стиле модерн (круги, треугольники, ромбы, квадраты накладываемые друг на друга).
Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 18. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: дом (корпус, крыша, окно, дымоход, дорожка к дому).
Сделать табличку с надписью на доме. Объект разместить в графическом окне втрое меньше рабочего экрана монитора.
Задача 19. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: автомобиль (колеса, корпус), Российский флаг.
Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 20. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: три окружности с центрами, в вершинах равностороннего треугольника.
В центре экрана сделать надписи «Окружности». Объект разместить в графическом окне рабочего экрана монитора.
Задача 21. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: круг вписанный в равнобедренный треугольник.
Сделать надпись в круге « Луна ». Объект разместить в графическом окне вдвое меньше рабочего экрана монитора.
Задача 22. Нарисовать эмблему. В верхней части графического экрана на белом фоне нарисовать синий квадрат, а в нем – белый вписанный круг, закрашенный черным цветом. В центре эмблемы черными буквами написать слово « МГТУ ».
Задача 23. Нарисовать на экране составной статический объект, состоящий из деталей различной раскраски: равносторонний треугольник вписанный в квадрат со стороной А. Объект разместить в графическом окне в центре рабочего экрана монитора.
Задача 24. Нарисовать разными цветами пять концентрических окружностей с общим центром в точке с графическими координатами (400, 240), и вписать в четвертую окружность белый треугольник.
Лабораторная работа №9
Объект, движущийся по некоторой кривой
Цель работы – овладение практическими приемами разработки программ в графическом режиме, в создании объектов, движущихся по заданной кривой.