Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Биоритм / Мой курсрвик / текст программы.doc
Скачиваний:
34
Добавлен:
01.05.2014
Размер:
89.6 Кб
Скачать

Inc(days_count);

{...и строим линию от значения в предыдущий день до значения в тек. день}

Canvas.LineTo(Canvas.PenPos.X+PixelStep,

(Height div 2) - CalculatePoints(DCalc.DateTime + days_count,

DBirth.DateTime,btPhys));

end; {end while}

{Психологический}

{...устанавливаем цвет в соответствии с выбранным}

Canvas.Pen.Color := clbPsy.Selected;

{...сколько дней брать до даты расчета}

days_count := -7;

{...устанавливаем начальную точку графика на значение биоритма в этот день}

Canvas.MoveTo(0,

(Height div 2) - CalculatePoints(DCalc.DateTime + days_count,

DBirth.DateTime,btPsy));

{...пока не нарисовали последнюю точку на графике}

while (Canvas.PenPos.X < Width) do begin

{...берем следующий день}

Inc(days_count);

{...и строим линию от значения в предыдущий день до значения в тек. день}

Canvas.LineTo(Canvas.PenPos.X+PixelStep,

(Height div 2) - CalculatePoints(DCalc.DateTime + days_count,

DBirth.DateTime,btPsy));

end; {end while}

{Интеллектуальный}

{...устанавливаем цвет в соответствии с выбранным}

Canvas.Pen.Color := clbInt.Selected;

{...сколько дней брать до даты расчета}

days_count := -7;

{...устанавливаем начальную точку графика на значение биоритма в этот день}

Canvas.MoveTo(0,

(Height div 2) - CalculatePoints(DCalc.DateTime + days_count,

DBirth.DateTime,btInt));

{...пока не нарисовали последнюю точку на графике}

while (Canvas.PenPos.X < Width) do begin

{...берем следующий день}

inc(days_count);

{...и строим линию от значения в предыдущий день до значения в тек. день}

Canvas.LineTo(Canvas.PenPos.X+PixelStep,

(Height div 2) - CalculatePoints(DCalc.DateTime + days_count,

DBirth.DateTime,btInt));

end; {end while}

end;{with aBitmap}

end;

{*******************************************************************************

Процедура DrawAxis

Назначение: Процедура рисования осей и градуировки шкалы.

Параметры:

1. aBitmap - "холст", на котором строятся графики

2. PixelStep - расстояние между соседними днями по оси календаря.

Это значение так же используется для ообозначения процентного уровня.

*******************************************************************************}

procedure TfrmMain.DrawAxis(aBitmap: TBitmap; PixelStep : integer);

var Days : integer;

svFont : TFont;

svPos : TPoint;

DayName : string;

begin

with aBitmap do begin

{Сохраняем параметры шрифта}

svFont := Canvas.Font;

{Рисуем координатную сетку)

{... вертикальные линии}

Canvas.MoveTo(0,0);

{... используем прерывистую линию}

Canvas.Pen.Style := psDot;

{... в качестве цвета, выбираем серый}

Canvas.Pen.Color := clMedGray;

{... и рисуем слева на право с шагом PixelStep}

while (Canvas.PenPos.X < Width) do begin

{... устанавливем начальную точку линии}

Canvas.MoveTo(Canvas.PenPos.X + PixelStep, PixelStep);

{... и рисуем саму линию}

Canvas.LineTo(Canvas.PenPos.X, Height - PixelStep);

end; {end while}

{... а теперь - горизонтальные линии}

Canvas.MoveTo(0,0);

{... и рисуем сверху вниз с шагом PixelStep}

while (Canvas.PenPos.Y < Width) do begin

{... устанавливем начальную точку линии}

Canvas.MoveTo(2,Canvas.PenPos.Y + PixelStep);

{... и рисуем саму линию}

Canvas.LineTo(Width - 2, Canvas.PenPos.Y);

end; {end while}

{Рисуем горизонтальную ось...}

{... выбираем сплошную линию}

Canvas.Pen.Style := psSolid;

{... устанавливаем черный цвет}

Canvas.Pen.Color := clBlack;

{... устанавливем начальную точку линии}

Canvas.MoveTo(0, Height div 2);

{... и рисуем саму линию}

Canvas.LineTo(Width, Height div 2);

{Рисуем вертикальную ось...}

{... устанавливем начальную точку линии}

Canvas.MoveTo(Width div 2, PixelStep);

{... и рисуем саму линию}

Canvas.LineTo(Width div 2, Height-PixelStep);

{--------------------------------------------------------------------------}

{Подписываем оси...}

Days := -7;

{... сначала - горизонтальную...}

Canvas.MoveTo(0,Height div 2);

{... устанавливаем черный цвет}

Canvas.Pen.Color := clBlack;

{... мелким шрифтом}

Canvas.Font.Size := 7;

while (Canvas.PenPos.X < Width) do begin

svPos := Canvas.PenPos;

{... сначала выводим число (дату)}

Canvas.TextOut(Canvas.PenPos.X +2, Canvas.PenPos.Y - 11,

IntToStr(DayOfTheMonth(DCalc.DateTime + Days)));

Canvas.MoveTo(svPos.X, svPos.Y);

{... а теперь название дня недели}

case DayOfTheWeek(DCalc.DateTime + Days) of

DayMonday : DayName := 'пн';

DayTuesday : DayName := 'вт';

DayWednesday : DayName := 'ср';

DayThursday : DayName := 'чт';

DayFriday : DayName := 'пт';

DaySaturday : DayName := 'сб';

DaySunday : DayName := 'вс';

else

{...а вдруг кто-то/что-то сглючило :)}

DayName := 'Ошибка.'

end;

{... выводим название дня недели на рисунке}

Canvas.TextOut(Canvas.PenPos.X +2, Canvas.PenPos.Y + 1, DayName);

Canvas.MoveTo(svPos.X + PixelStep, Height div 2);

Соседние файлы в папке Мой курсрвик