Delphi World - Функция построения графика
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Функция построения графика

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

private
   FPoints: array [0..144] of TPoint;

 {...}

 procedure TForm1.CalculateGraph;
 var
   xRangePixels, yRangePixels: Integer;
   origin: TPoint;
   radian, interval: Double;
   i: Integer;
 begin
   { 
    We calculate the sinus curve in the interval -2Pi..+2Pi, 
    with a resolution of 4Pi/144, as a series of points that 
    will be connected by a polyline. The graph is scaled to fit into 
    the paintbox. The origin of the coordinate system is the center 
    of the paintbox. The default windows coordinate system is inverted, 
    the Y axis points downward! 
  }
   xRangePixels := (paintbox1.Width - 2) div 4; { pixels in Pi }
   yRangePixels := (paintbox1.Height - 2) div 2; { pixels in 1 }
   origin       := Point(paintbox1.Width div 2, paintbox1.Height div 2);
   radian       := -2.0 * Pi;
   interval     := 4.0 * Pi / 144.0;
   for i := 0 to High(FPoints) do
    begin
     FPoints[i].X := origin.x + Round(radian * xRangePixels / Pi);
     FPoints[i].Y := origin.y - Round(sin(radian) * yRangePixels);
     radian       := radian + interval;
   end;
 end;

 procedure TForm1.PaintBox1Paint(Sender: TObject);
 var
   origin: TPoint;
   xRangePixels, yRangePixels: Integer;
 begin
   with PaintBox1.Canvas do
    begin
     { Fill background in white }
     Brush.Color := clBtnFace;
     Brush.Style := bsSolid;
     Fillrect(paintbox1.BoundsRect);

     { Paint a coordinate cross }
     origin    := Point(paintbox1.Width div 2, paintbox1.Height div 2);
     Pen.Color := clBlack;
     Pen.Style := psSolid;
     Pen.Width := 1;
     MoveTo(1, origin.Y);
     LineTo(paintbox1.Width - 1, origin.y);
     MoveTo(origin.x, 1);
     LineTo(origin.x, paintbox1.Height - 1);

     { Paint some tickmarks and label the axis }
     Font.Name    := 'Symbol';
     Font.Size    := 8;
     Font.Color   := clBlack;
     xRangePixels := (paintbox1.Width - 2) div 4; { pixels in Pi }
     yRangePixels := (paintbox1.Height - 2) div 2; { pixels in 1 }

     { X axis }
     MoveTo(origin.x - 2 * xRangePixels, origin.y - 4);
     LineTo(origin.x - 2 * xRangePixels, origin.y + 4);
     TextOut(origin.x - 2 * xRangePixels + 2, origin.y + 2, '-2p');
     MoveTo(origin.x - xRangePixels, origin.y - 4);
     LineTo(origin.x - xRangePixels, origin.y + 4);
     TextOut(origin.x - xRangePixels + 2, origin.y + 2, '-p');
     MoveTo(origin.x + xRangePixels, origin.y - 4);
     LineTo(origin.x + xRangePixels, origin.y + 4);
     TextOut(origin.x + xRangePixels - 2 - TextWidth('p'), origin.y + 2, 'p');
     MoveTo(origin.x + 2 * xRangePixels, origin.y - 4);
     LineTo(origin.x + 2 * xRangePixels, origin.y + 4);
     TextOut(origin.x + 2 * xRangePixels - 2 - TextWidth('2p'), origin.y + 2, '2p');


     { Y axis }
     MoveTo(origin.x - 4, origin.y - yRangePixels);
     LineTo(origin.x + 4, origin.y - yRangePixels);
     TextOut(origin.x + 4, origin.y - yRangePixels, '1.0');
     MoveTo(origin.x - 4, origin.y - yRangePixels div 2);
     LineTo(origin.x + 4, origin.y - yRangePixels div 2);
     TextOut(origin.x + 4, origin.y - (yRangePixels + TextHeight('1')) div 2, '0.5');
     MoveTo(origin.x - 2, origin.y + yRangePixels div 2);
     LineTo(origin.x + 2, origin.y + yRangePixels div 2);
     TextOut(origin.x + 3, origin.y + (yRangePixels - TextHeight('1')) div 2, '-0.5');
     MoveTo(origin.x - 2, origin.y + yRangePixels);
     LineTo(origin.x + 2, origin.y + yRangePixels);
     TextOut(origin.x + 3, origin.y + yRangePixels - TextHeight('1'), '-1.0');

     {Paint the graph }
     Pen.Color := clBlue;
     Polyline(FPoints);
   end;
 end;

 procedure TForm1.FormResize(Sender: TObject);
 begin
   CalculateGraph;
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
   CalculateGraph;
 end;
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования