Вниз
Скачать: CL | DM;

Как нарисовать график   Найти похожие ветки 

← →
Биритм   (2006-12-25 14:53) [0]

Подскажите как в делфи построить график по заданной функции.И вообще можно ли это сделать используя стандартные средства Delphi


← →
Ega23 ©   (2006-12-25 14:54) [1]

см. компонент TChart


← →
Steep ©   (2006-12-25 14:56) [2]


> И вообще можно ли это сделать используя стандартные средства
> Delphi

конечно возможно!

> Подскажите как в делфи построить график по заданной функции

береш TCavas и рисуешь.
Canvas.MoveTo(x,y); передвижение в заданную точку
Canvas.LineTo(x,y); линия в заданную точку


← →
ВаДикДаДик   (2006-12-25 14:57) [3]

А можно поподробнее а то в делфи я новичок


← →
Биритм   (2006-12-25 14:59) [4]

Мне нужно построить синусойду, мне кажется Canvas.LineTo не подойдёт, хотя может я ошибаюсь


← →
grisme ©   (2006-12-25 15:03) [5]

GDI / GL / DX %-)


← →
Steep ©   (2006-12-25 15:04) [6]


> GDI / GL / DX %-)

самое-то начинаещему?


← →
Ega23 ©   (2006-12-25 15:07) [7]


> Мне нужно построить синусойду, мне кажется Canvas.LineTo
> не подойдёт, хотя может я ошибаюсь


Кажется - креститься надо.


← →
Биритм   (2006-12-25 15:07) [8]

Подскажите где находиться компонент TCavas


← →
Ega23 ©   (2006-12-25 15:07) [9]

TCanvas никогда компонентом не был (и не будет).


← →
Steep ©   (2006-12-25 15:07) [10]

как же не подходит.
тебе нужно рассчитать график
т.е. примерно так
передвигаешь точку в начале рисования MoveTo
Canvas.MoveTo(0, Canvas.height)
затем в цикле рисуешь график своей функции
For i:=0 to 800 do
 begin            
 Canvas.LineTo(i, Sin(i));
 end;

Ps. надеюсь у меня правильно мозги работают


← →
Steep ©   (2006-12-25 15:09) [11]

TCanvas (опять мастера на меня наедут) находиться в Практически любом визуальном компоненте. но лучше использовать PaintBox


← →
Ega23 ©   (2006-12-25 15:15) [12]


> TCanvas (опять мастера на меня наедут) находиться в Практически
> любом визуальном компоненте. но лучше использовать PaintBox


TCanvas - суть HDC. Есть действительно у многих визуальных компонентов (но далеко не у всех). Не у всех оно в public.


← →
Anatoly Podgoretsky ©   (2006-12-25 15:15) [13]

> Steep  (25.12.2006 15:07:10)  [10]

Неправильно, будет прямая линия


← →
Steep ©   (2006-12-25 15:18) [14]


> Неправильно, будет прямая линия

ой ну да
Canvas.LineTo(i, Round(Sin(i)*100) );

а так?


← →
Max Ivanych ©   (2006-12-25 15:21) [15]

А если все-таки обратиться к TChart?


← →
Max Ivanych ©   (2006-12-25 15:29) [16]

Берешь, бросаешь его на форму, создаешь серию для графика через редактор, далее
Series1.Clear;
for i:=0 to 800 do
Series1.Add(i,Sin(i));


← →
Anatoly Podgoretsky ©   (2006-12-25 15:40) [17]

> Steep  (25.12.2006 15:18:14)  [14]

Аргумент должен быть в радианах


← →
inkvizitor ©   (2006-12-26 09:27) [18]

выкинь chart на форму, нажми два раза прав.кнопкой, нажми add выбери тип графика и экспериментируй
пример синуса при появлении окна:

procedure TForm1.FormActivate(Sender: TObject);
var
k: Integer;
begin
for k := 0 to 20 do
Chartl.SeriesList[0].AddXY(k,sin(k*pi/10)," ",clRed) ;
end;

стандартно.


← →
kester ©   (2006-12-27 00:12) [19]

Вот код из DRKB. Рисует график функции.


procedure TForm1.Button3Click(Sender: TObject);
var x, y: array[1..50] of double;
 i: integer;
 scalex, scaley, ymin, ymax, xmin, xmax: double;
begin
 for i := 1 to 50 do
   begin
     y[i] := sin(i * 0.5);
     x[i] := i;
   end;
 xmin := x[1];
 xmax := x[1];
 ymin := y[1];
 ymax := y[1];
 for i := 2 to 50 do
   begin // или используйте ymin:=MinValue(y); и т.д.
     if y[i] < ymin then ymin := y[i];
     if y[i] > ymax then ymax := y[i];
     if x[i] < xmin then xmin := x[i];
     if x[i] > xmax then xmax := x[i];
   end;
 scalex := paintbox1.Width / (xmax - xmin);
 scaley := paintbox1.Height / (ymax - ymin);
 with paintbox1.canvas do
   begin
     moveto(trunc(scalex * (x[1] - xmin)), paintbox1.height - trunc(scaley * (y[1] - ymin)));
     for i := 2 to 50 do
       Lineto(trunc(scalex * (x[i] - xmin)), paintbox1.height - trunc(scaley * (y[i] - ymin)));
   end;
end;



← →
ors_archangel ©   (2006-12-27 01:18) [20]

MoveTo/LineTo лучше заменить Windows.PolyPolyLine



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.027 c
15-1166814293
Ученик чародея
2006-12-22 22:04
2007.01.14
Что курили в Microsoft, когда это писали?


2-1166806144
AlexanderMS
2006-12-22 19:49
2007.01.14
Мусор в памяти после жизнедеятельности программы.


9-1134361287
megabyte-ceercop
2005-12-12 07:21
2007.01.14
Сетевая игра. BCB6


15-1167028847
Новый
2006-12-25 09:40
2007.01.14
Можно ли, передать в DLL


3-1161855268
lama
2006-10-26 13:34
2007.01.14
Заполнение поле в DBGrid




   Наверх