Рисование многоугольника на координатной плоскости (TCanvas, TImage, Polygon) |
Автор megabax | |||||
22.09.2009 г. | |||||
![]() Рисование многоугольника на координатной плоскости (TCanvas, TImage, Polygon)Исходники к уроку можно скачать здесь. Сначала мы изучим несколько графических возможностей типовой версии Delphi, такие как TImage, TCanvs и другие, методы графических преобразований объектов, такие как масштабирование, поступательное движение, вращение, затем перейдем к изучению DirectX, а потом будем писать собственную компьютерную игру. Первый урок мы начнем с того, что научимся рисовать многоугольник в заданной системе координат и масштабировать его. В процессе создания графических компьютерных игр нам обязательно потребуется переводить объекты из одной системы координат в другую, причем с разным масштабом. вот этому то и мы научимся сейчас. И так, давайте создадим класс TAxesSystem, который будет переводить из произвольной системы координат в графическую систему координат компьютера:
Пока не будем заморачиваться насчет того, в какие секции Public, Private или Protected поставить поля и методы класса. Это мы сделаем в следующих уроках, когда будем расширять и совершенствовать нашу библиотеку. Теперь реализуем методы объявленного класса:
Теперь немножко комментариев к коду. В методах GetX и GetY мы просто пересчитываем координаты в другую систему координат. X и Y - это координаты центра нашей системы координат в системе координат компьютера. Для наглядности это изображено на рисунке: Графическая координатная система компьютера начинается в левом верхнем углу экрана, окна или объекта внутри окна. Ось Y направлена вниз. Кроме того, в этой системе координат не может быть дробных чисел. Именно поэтому в формуле пересчета имеется функция round - округление. может отличатся и масштаб. Например, единичный отрезок нашей системы координат может быть равен 10 пикселам. В этом случае масштаб равен 1:10 (RatioX или RatioY равно 0,1). Нам может потребоваться сжать или вытянуть графический объект по вертикали или горизонтали. Для этого можно задать разный масштаб для оси X и оси Y. А теперь перейдем, собственно, к рисованию. Для этого положим на форму компонент TImage, который находиться на закладке Additional*: Затем положим на форму кнопочку для запуска процесса рисования, два поля ввода для задания масштаба по горизонтали и вертикали, а так же два компонента TSpinEdit для задания координат центра нашей системы координат*. У нас получиться примерно такая форма*: Поля ввода назовем edX и edY, компоненты TSpinEdit соответсвенно seX и seY. Теперь для кнопочки напишем обработчик события OnClick
Теперь немножечко комментариев. Сперва мы задаем координаты точек, используя для этого массив из структур TPoint. Для пересчета координат создаем объект класса TAxesSystem, после чего в цикле перебираем все элементы массива и пересчитываем координаты. Очищаем поле картинки (TImage), для чего используем метод FillRect класса TCanvas, который является свойством TImage, который просто рисует заполненный прямоугольник. по умолчанию он имеет белый цвет, поэтому картинка (TImage) у нас очистится. и, наконец, вызываем метод Polygon класса TCanvas, который является свойством TImage. Теперь запустим программу и нажмем кнопочку Обратите внимание, что так как ось Y графической системы координат компьютера направлена вниз, а нашей вверх, то масштаб по оси Y взять со знаком минус. Попробуем изменить координаты нашей системы координат и нажать кнопочку "Показать фигуру": Изменим масштаб: Теперь давайте попробуем нарисовать другую фигуру. Перепишите обработчик OnClick кнопочки, например, так:
Теперь фигура будет выглядеть вот так: На этом урок закончен, двигать, вращать и проводить прочие манипуляции с объектами мы будем на следующих уроках. Исходники к уроку можно скачать здесь. Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями в соответствии со ст. 1274 ГК РФ программного продукта "Delphi", авторское право на который принадлежит Borland Delphi.. |
|||||
Последнее обновление ( 06.11.2011 г. ) |