Как рисовать на Web-странице
Оглавление
Как рисовать на Web-странице
Страница 2
Страница 2 из 2
Народ замечает
Интересную штуку придумал автор — он рисует горизонтальные и вертикальные
линии, просто растягивая по горизонтали или вертикали рисующую точку. Это и
быстрее, чем вырисовывание таких линий поточечно, и компьютерных ресурсов для
отображения отнимает много меньше.
Функция jspsDrawRectangle (листинг 6.5) занимается рисованием
прямоугольников. Формат ее вызова таков:
jspsDrawLine{<Координата X верхнего левого угла>,<Координата Y
верхнего левого угла>,<Координата X нижнего правого
угла>,<Координата Y нижнего правого угла> [, <Размер точки>[,
<Элемент страницы>]]);
Она использует объявленную ранее функцию jspsDrawLine и не возвращает
значения.
Листинг 6.5. Функция jspsDrawRectangle, рисующая на Web странице
прямоугольник
function jspsDrawRectangle(x1, y1, х2, у2, pSize, element) {
jspsDrawLine(x1, y1, x2, y1,
pSize, element);
jspsDrawLine(x2, y1, x2, y2,
pSize, element);
jspsDrawLine(x2, y2, x1, y2,
pSize, element);
jspsDrawLine(x1, y2, x1, y1,
pSize, element); }
Функция jspsDrawEliipsis (листинг 6.6) рисует на Web-странице эллипс (или,
как частный случай эллипса, окружность, в зависимости от заданных параметров).
Вот формат ее вызова:
jspsDrawEliipsis(<Координата X центра>, <Координата Y
центра>,<Горизонтальный радиуо[, <Вертикальный радиуо[, <Размер
точки> [, <Элемент страницьт>] ]]) ;
Все параметры этой функции должны быть понятны без всяких объяснений.
Единственное — если Вертикальный радиус не задан, его значение принимается
равным горизонтальному радиусу (в результате будет нарисована окружность —
вырожденный вариант эллипса).
Функция jspsDrawEliipsis использует объявленную ранее функцию jspsDrawDot для
рисования точек, и также не возвращает значения.
Листинг 6.6. Функция jspsnrawEllipsis. рисующая на Web-странице эллипс
function jspsDrawEllipsis(x, у, Rh, Rv, pSize, element)
{
if (!Rv) Rv = Rh;
if (!pSize) pSize = 1;
if (!element) element = document.body;
var rr = Math.PI * 2;
for (var a = 0; a <= rr; a += .02)
jspsDrawDot(x + Rh * Math.sin(a), у + Rv * Math.cos(a), pSize, element);
}
Хорошая идея!
Поместите объявление всех функций, выполняющих рисование, и переменной
jsps_DD_dotFileName в файл сценариев draw.js. Впоследствии, чтобы использовать
их, достаточно будет просто подключить к Web-странице этот файл сценариев с
помощью тега:
<SCRIPT SRC="draw.js"x/SCRIPT>
Пример 1
Вот HTML-код Web-страницы, выводящей изображение окружности, вписанного в нее
квадрата и вписанного уже в этот квадрат треугольника.
<html>
<HEAD>
<TITLE>Рисование на Web-странице</TITLE> <SCRIPT
SRC="draw.js"></SCRIPT>
<!-- Предполагаем, что объявления всех использованных в этом коде функций
находятся в файле сценариев draw.js --> </HEAD> <BODY>
<SCRIPT TYPE="text/javascript">
// Задаем имя файла, хранящего "рисующую" точку. Если мы оставим
// старое значение, страница не будет работать правильно без
// Web-сервера
jsps_DD_dotFileName = "dot.gif";
// Рисуем окружность
jspsDrawEllipsis(200, 200, 100, 100);
// Рисуем вписанный в нее квадрат
var h = Math.sin(Math.PI / 4) * 100;
jspsDrawRectangle(200 - h, 200 - h, 200 + h, 200 + h);
// Рисуем вписанный в квадрат треугольник jspsDrawLine(200, 200 - h, 200 - h,
200 + h); jspsDrawLine(200, 200 - h, 200 + h, 200 + h) ; </SCRIPT>
</BODY> /HTML>
Пример 2
Этот небольшой сценарий выведет на Web-страницу синусоиду.
var V = 100; var amp = 50; var end = 360;
for (var а = 0; а <= end; a++) jspsDrawDot(a, V - amp *
Math.sin(jspsToRad(a)));
Здесь в переменной v хранится отступ от верха страницы до горизонтальной
координатной оси, в переменной amp— амплитуда ("размах") нашей сину-соиды, а в
переменной end — граничное значение.
Народ предупреждает!
Не забываем о том, что пикселы на экране отсчитываются слева направо, но
сверху вниз! Именно поэтому в выражении, вычисляющем вертикальную
коор-динатуточки,—V - amp * Math.sin(jspsToRad(a))—стоит знак вычитания.
Внимание!
Приведенный выше пример использует функцию jspsToRad, чье объявление
представлено в листинге 1.19.
Что дальше?
Ну вот, с графическими изображениями и связанными с ними эффектами мы при
помощи всезнающего народа разобрались. На очереди — гиперссылки и все, что с
ними связано. Мы научимся выполнять Web-сценарии в ответ на щелчки по ним,
создавать всплывающие подсказки и полосы навигации. За дело!
« Пред. - След.