Читайте также:
|
|
Постановка задачи. Нарисовать координатную сетку, как показано на рис. 10.
Реализация. Напишем процедуру setka (x0, y0, mx, my: integer)
с входными параметрами x 0, y 0 – координаты начала системы координат; mx, my – шаги координатной сетки в пикселях.
Рис. 10. Координатная сетка
procedure setka(x0, y0, mx, my:integer);
// x0, y0 - координаты начала системы координат
var lx, ly:real; // метки (оцифровка) линий сетки
dlx, dly:real; // шаг меток (оцифровки) линий сетки
x,y:integer;
cross:integer; счетчик неоцифрованных линий
begin
dlx:=0.5; // шаг меток оси X
dly:=1.0; // шаг меток оси Y, метками будут: 1, 2, 3 и т. д.
with form1.Canvas do
begin
cross:=dcross;
MoveTo(x0,y0); LineTo(x0,y0-h); // ось X
MoveTo(x0,y0); LineTo(x0+w,y0); // ось Y
// засечки, сетка и оцифровка оси X
x:=x0+mx;
lx:=dlx;
repeat
MoveTo(x,y0-3);LineTo(x,y0+3); // засечка
cross:=cross-1;
if cross = 0 then // оцифровка
begin
TextOut(x-8,y0+5,FloatToStr(lx));
cross:=dcross;
end;
Pen.Style:=psDot;
MoveTo(x,y0-3);LineTo(x,y0-h); // линия сетки
Pen.Style:=psSolid;
lx:=lx+dlx;
x:=x+mx;
until (x>x0+w);
// засечки, сетка и оцифровка по оси Y
y:=y0-my;
ly:= dly;
repeat
MoveTo(x0-3,y);LineTo(x0+3,y); // засечка
TextOut(x0-20,y,FloatToStr(ly)); // оцифровка
Pen.Style:=psDot;
MoveTo(x0+3,y); LineTo(x0+w,y); // линия сетки
Pen.Style:=psSolid;
y:=y-my;
ly:=ly+dly;
until (y<y0-h);
end;
end;
Вернемся к способам вывода изображения на форму. Третий способ вывода изображения сразу же при запуске приложения заключается в следующем. Выберите событие формы OnPaint. Справа нажмите на стрелочку и выберите строку FormCreate. Тогда, если напишем в коде процедуры FormCreate вызов процедуры Setka,
то рисунок появится на форме сразу после запуска проекта. Ниже приведен код процедуры FormCreate:
procedure TForm1.FormCreate(Sender: TObject);
begin
mx:=25;
my:=25;
dcross:=1; // помечать линии сетки X: 1 – каждую;
// 2 – через одну;
// 3 – через две;
h:=7*my;
w:=14*mx;
setka(30,200,mx,my);
end;
Задание 1. Измените переменную dlx так, чтобы метки по оси Х тоже были через 1.
Задание 2. Упростите процедуру setka (x0, y0, mx, my: integer) так, чтобы координатная сетка была пригодна для построения графиков элементарных функций (примерный вид приведен на рис. 11). Новую процедуру setka назовите koord_setka.
Рис. 11. Оси координат и сетка
Дата добавления: 2015-08-20; просмотров: 61 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Рисование поля для различных игр | | | Построение графиков элементарных функций |