| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: Delphi :: Delphi 7 начинающему :: Глава 10. Графические возможности Delphi :: Метод базовой точки
Метод базовой точки
Метод
базовой точки При программировании
сложных изображений, состоящих из множества элементов, используется метод, который
называется методом базовой точки. Суть этого метода заключается в следующем: 1. Выбирается некоторая
точка изображения, которая принимается за базовую. 2. Координаты остальных
точек отсчитываются от базовой точки. 3. Если координаты
точек изображения отсчитывать от базовой в относительных единицах, а не в пикселах,
то обеспечивается возможность масштабирования изображения. На рис. 10.17 приведено
изображение кораблика. Базовой точкой является точка с координатами (X0
Y0). Координаты остальных точек отсчитываются именно от этой точки.
Рис. 10.17. Определение
координат изображения относительно базовой точки В листинге 10.9 приведен
текст программы, которая выводит на экран изображение перемещающегося кораблика. Листинг 10.9.
Кораблик unit
ship_; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
ExtCtrls; type TForm1
= class(TForm) Timer1:
TTimer; procedure
Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); private {
Private declarations } public {
Public declarations } end; var Form1:
TForm1; x,y:
integer; // координаты корабля (базовой точки) implementation {$R
*.DFM} //
вычерчивает кораблик procedure
Titanik(x,y: integer; // координаты базовой точки color: TColor); // цвет корабля const dx = 5; dy = 5;
var buf: TColor; begin with
form1.canvas do begin buf:=pen.Color; // сохраним текущий цвет pen.Color:=color; // установим нужный цвет //
рисуем . . . //
корпус MoveTo(x,y); LineTo(x,y-2*dy) ; LineTo (x+10*dx, y-2*dy) ; LineTo (x+ll*dx, y-3*dy) ; LineTo (x+17*dx,y-3*dy) ; LineTo (x+14*dx, y) ; LineTo
(x,y) ; // надстройка MoveTo(x+3*dx,y-2*dy) ; LineTo (x+4*dx, y-3*dy) ; LineTo (x+4*dx, y-4*dy) ; LineTo (x+13*dx,y-4*dy) ; LineTo (x+13*dx, y-3*dy) ; MoveTo(x+5*dx,y-3*dy) ; LineTo
(x+9*dx, y-3*dy) ; //
капитанский мостик Rectangle
(x+8*dx, y-4*dy, x+ll*dx, y-5*dy) //
труба Rectangle
(x+7*dx, y-4*dy, x+8*dx, y-7*dy) ; //
иллюминаторы Ellipse
(x+ll*dx,y-2*dy,x+12*dx,y-l*dy) ; Ellipse
(x+13*dx, y-2*dy, x+14*dx, y-l*dy) ; //
мачта MoveTo(.x+10*dx,y-5*dy)
; LineTo(x+10*dx,y-10*dy); //
оснастка MoveTo(x+17*dx,y-3*dy); LineTo(x+10*dx,y-10*dy); LineTo(x,y-2*dy); pen.Color:=buf; // восстановим старый цвет карандаша end; end; //
обработка сигнала таймера procedure TForm1.Timer1Timer(Sender: TObject); begin Titanik(x,y,form1.color); // стереть рисунок if x < Form1.ClientWidth then x := x+5
else begin // новый рейс x := 0; у := Random(50) + 100; end; Titanik(x,у,clWhite);
// нарисовать в новой точке end; procedure TForml.FormActivate(Sender: TObject); begin x:=0;
y:=100; Form1.Color:=clNavy; Timerl.Interval := 50; // сигнал таймера каждые 50 миллисекунд end; end. Отрисовку и стирание изображения кораблика выполняет процедура Titanik, которая получает в качестве параметров координаты базовой точки и цвет, которым надо вычертить изображение кораблика. Если при вызове процедуры цвет отличается от цвета фона формы, то процедура рисует кораблик, а если совпадает — то "стирает". В процедуре Titanik объявлены константы dx и dy, определяющие шаг (в пикселах), используемый при вычислении координат точек изображения. Меняя значения этих констант, можно проводить масштабирование изображения. Подгрузка через AJAX HTML-кода, содержащег....
При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.
Подробнее... |
Рубрика: AJAX
| Добавлено: 19.11.2008
Обзор нового релиза самой мощной Ajax библ....
Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.
Подробнее... |
Рубрика: AJAX
| Добавлено: 19.11.2008
Firebug 1.3 и 1.4 alpha — что нового и инт....
Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.
Подробнее... |
Рубрика: Вебмастеру
| Добавлено: 19.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|