- Попроси больше объяснений
- Следить
- Отметить нарушение
Safeenglish 24.06.2014
Ответ
- Комментарии (5)
- Отметить нарушение
procedure ms(x, y, z: integer);
begin
window.Title := string.Format(‘(<0>; <1>)’, x, y);
end;
begin
setbrushcolor(clGray);
circle(150, 200, 20);
GRaphabc.OnMouseMove := ms;
line(128,214,67,214);
line(66,194,125,196);
line(126,204,67,202);
moveto(131,184);
lineto(69,166); lineto(66,194);
lineto(67,202);
lineto(67,214); lineto(128,214);
lineto(125,196); lineto(131, 184);
graphabc.FloodFill(100, 210, cllightgray);
graphabc.FloodFill(70, 190, cllightgray);
graphabc.FloodFill(98, 200, cllightgray);
line(230,215,230,127);
ellipse(260,100,200,176);
floodfill(230,133,clwhite);
Ой, да, уберите всю процедуру
procedure ms(x, y, z: integer);
begin
window.Title := string.Format(‘(<0>; <1>)’, x, y);
end;
и строку
GRaphabc.OnMouseMove := ms;
У меня не ругалось, но это тут лишнее, для дебага делал
В этом уроке будет показано, как можно создать анимированное изображение с помощью модуля GraphABC.
В качестве примера создадим движение нескольких (примитивных) фигур по заданной траектории.
Без чего мы обойтись не сможем, не сможем мы обойтись без нескольких инструментов:
Процедура LockDrawing;
Рисование средствами PascalABC происходит очень медленно. Пока оно идет, картинка на экране успевает много раз обновиться. Отсюда мерцание. То есть, мы видим не окончательную картинку, а процесс ее рисования. Окончательную картинку в общем-то не видим — как только она построилась, мы ее тут же стираем и начинаем новый цикл рисования. Для борьбы с этим эффектом придумали двойную буферизацию. Идея в том, чтобы сначала построить картинку в памяти (не выводя на экран), а затем отобразить новый кадр на экране целиком, без промежуточных вариантов, где не хватает половины лучиков. Для этого в начале программы вызываем процедуру LockDrawing.
Процедура ClearWindow (color);
После каждой прохода по циклу очищает графическое окно указанным цветом, который передается в качестве параметра.
После этого все команды рисования будут создавать картинку в памяти (в так называемом вторичном буфере). Непосредственно на экране ничего рисоваться не будет. После того, как очередной кадр анимации полностью отрисован (то есть перед ClearWindow), нужно вызвать процедуру
Redraw;
Эта процедура вызовет перерисовку всей картины.
Нарисуем сначала четыре окружности.
Второй стадией, будет отрисовка пятой окружности и с помощью вышеуказанных процедур и цикла заставим его двигаться по заданной траектории.
После запуска PascalABC, по умолчанию, запускается текстовый режим. Для работы с графикой служит отдельное графическое окно.
Чтобы его открыть, необходимо подключить модуль GraphABC. В этом модуле содержится набор процедур и функций, предназначенных для работы с графическим экраном, а также некоторые встроенные константы и переменные, которые могут быть использованы в программах с графикой.
С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.
Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;
Графический экран PascalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали. Начало отсчета – левый верхний угол экрана. Ось x направлена вправо, а ось y –вниз. Координаты исчисляются в пикселях.
Все команды библиотеки GraphABC являются подпрограммами и описаны в виде процедур и функций. Для того, что бы команда выполнилась необходимо указать команду и задать значения параметров.
Управление графическим окном
Процедуры рисования графических примитивов
Процедуры, используемые для работы с цветом
Процедуры для работы с текстом
Цвета в PascalABC
Пример графической программы, рисующей изображение дома:
Рисунок в PascalABC
Программа, рисующая фигурку:
Практическая работа за компьютером
Задание 1. Определите координаты и составьте программу, выводящую на экран рисунк дома и дерева.
Программа будет иметь вид:
Задание 2. Используя оператор цикла и введя переменную для пересчета координат по оси x, постройте “поселок”, состоящий из 5 домов. Внесите соответствующие дополнения и изменения в предыдущую программу.
Весь наш “поселок” выстроился вдоль горизонтальной оси экрана – оси X. Построение рисунка начинается с левого верхнего угла стены первого дома – точки с координатами (100, 50). Координата Y не изменяется. Чтобы начать рисовать второй домик, нужно координату X увеличить на 150 (50 точек – ширина первого дома и 100 точек – расстояние между домиками).
Выберем в качестве параметра цикла целочисленную переменную X.
Для всех элементов нашего рисунка абсолютное значение координаты X заменим на относительное. Например, для стены дома процедура для рисования запишется следующим образом:
Сформулируем условие выполнения цыклических действий для нашей задачи.Какие координаты имеет левый верхний угол пятого дома? Конечное значение выбранного нами параметра цикла x = 700. Тогда условие выполнения цикла записывается так: x Людмила 8 февраля 2016 в 12:14
Отличное подспорье в подготовке к уроку. Спасибо
Большое спасибо.Хорошо представлен материал, удобнее чем в справке языка.
Спасибо! Доступно и методически грамотно изложено.