Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  135

•  TDictionary Custom Sort  3 317

•  Fast Watermark Sources  3 065

•  3D Designer  4 825

•  Sik Screen Capture  3 320

•  Patch Maker  3 535

•  Айболит (remote control)  3 637

•  ListBox Drag & Drop  2 996

•  Доска для игры Реверси  81 563

•  Графические эффекты  3 927

•  Рисование по маске  3 231

•  Перетаскивание изображений  2 613

•  Canvas Drawing  2 735

•  Рисование Луны  2 561

•  Поворот изображения  2 166

•  Рисование стержней  2 161

•  Paint on Shape  1 564

•  Генератор кроссвордов  2 226

•  Головоломка Paletto  1 764

•  Теорема Монжа об окружностях  2 215

•  Пазл Numbrix  1 682

•  Заборы и коммивояжеры  2 052

•  Игра HIP  1 279

•  Игра Go (Го)  1 225

•  Симулятор лифта  1 471

•  Программа укладки плитки  1 214

•  Генератор лабиринта  1 542

•  Проверка числового ввода  1 352

•  HEX View  1 490

•  Физический маятник  1 355

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Функция построения графика



Оформил: DeeCo

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;







Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте