Простые двухмерные построения: масштабирование

Текст программы построен на основе предыдущей программы. Новые используемые команды - glScalef (команда масштабирования) и glViewPort (область вывода изображения) (щелкните по интересующей Вас команде в тексте программы и в нижней части окна получите подробную справку).


При запуске программы последовательно происходит 3 действия:

1. Cоздание формы - OnCreate, в обработчике этого события находятся следующие строки - SetDCPixelFormat(Canvas.Handle) - задаем формат пикселя обращаясь к описанной в этом же модуле пользовательской процедуре - procedure SetDCPixelFormat(hdc : HDC) - не забываем посмотреть всю помощь щелкая мышью по гиперссылкам-командам OpenGL с интересующими Вас командами. Далее создаем контекст воспроизведения - wglCreateContext (Canvas.Handle).
2. Событие-перерисовка OnPaint отличается от предыдущих программ не значительно - поэтому не будем повторятся - рассмотрим две новые команды - glViewPort и glScalef - потому что в некотором роде это команды-близнецы - их использованием можно добится одинакового результата. Как? - читаем дальше. Команда glViewPort задает своими параметрами-координатами область вывода изображения - т.е. ту область которая будет считаться окном, любая часть любого объекта выходящая за координаты области вывода отсекаются - проверьте сами - используя команду переноса glTranslatef (параметры glViewPort не изменяются). Команда glScalef с параметрами равными 1 предъявляют нашему вниманию изображение в масштабе 1:1, при изменении параметров команды происходит масштабирование всей сцены по осям (так как glScalef стоит перед командами вывода изображения). Если командой glViewPort задать в параметрах окно размером в половину существующего или задать у команды glScalef все параметры 0.5 - Вы добьётесь одинакового результата. При изменении 3 параметра команды glScalef не происходит изменений - так как построение 2-x мерное (X и Y), а этот параметр отвечает за масштабный коэффициент по оси Z. Далее все изображается уже изученным Вами способом. Для эксперимента попробуйте изменять различные параметры.
3. При корректном завершении работы программы OnDestroy происходит удаление контекста воспроизведения - wglDeleteContext(hrc).
к оглавлению к оглавлению


Для переноса кода программы в Delphi необходимо выполнить следующие действия:

1 способ (продвинутый):
1. Сохранить текст программы под любым именем в формате TXT - Программа / Сохранить код программы - в выпадающем списке диалога "Тип файла" выбрать "Текстовый файл (*.txt)".
2. Открыть свои новый текстовый файл в любом редакторе и скопировать весь текст в буфер обмена.
3. Запустить Delphi и начать новый проект - все элементы имеют свои названия по умолчанию, поэтому Вам не следует изменять их - это важно.
4. Перейти на вкладку проекта Events и выполнить двойной щелчок в полях OnCreate, OnDestroy и OnPaint.
5. Перейти к тексту программы Unit1, стереть его весь и на его место вставить текст из буфера обмена, можно воспользоваться комбинацией клавиш Ctrl+V.
6. Запустить Ваш новый проект - F9.

2 способ (быстрый):
1. Создать новую папку - здесь будет лежать Ваш новый проект. Например - PR1.
2. Из папки Book3D\MY_KOD скопировать в Вашу новую папку PR1 содержимое папки N1-12 (код для уроков с 1 по 12).
3. Сохранить текст программы под именем Unit1 в формате TXT в PR1 - Программа / Сохранить код программы - в выпадающем списке диалога "Тип файла" выбрать "Текстовый файл (*.txt)".
4. Переименовать файл Unit1.txt в Unit1.pas - на вопрос "Заменить файл" - "ОК".
5. Запустить файл Project1.dpr из PR1 или запустить Delphi и открыть проект из PR1 - Project1.dpr.
6. Запустить Ваш новый проект - F9.

Если все сделали правильно - Вы получите тот же результат, что и в Book3D-редакторе.
к оглавлению к оглавлению