![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как нарисовать график [D7]
Биритм © (2006-12-25 14:53:00)Подскажите как в делфи построить график по заданной функции.И вообще можно ли это сделать используя стандартные средства Delphi
ors_archangel (2006-12-27 01:18:00) [1]MoveTo/LineTo лучше заменить Windows.PolyPolyLine
kester (2006-12-27 00:12:00) [2]Вот код из 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;
inkvizitor (2006-12-26 09:27:00) [3]выкинь 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;
стандартно.
Anatoly Podgoretsky (2006-12-25 15:40:00) [4]> Steep (25.12.2006 15:18:14) [14]
Аргумент должен быть в радианах
Max Ivanych (2006-12-25 15:29:00) [5]Берешь, бросаешь его на форму, создаешь серию для графика через редактор, далее
Series1.Clear;
for i:=0 to 800 do
Series1.Add(i,Sin(i));
Max Ivanych (2006-12-25 15:21:00) [6]А если все-таки обратиться к TChart?
Steep (2006-12-25 15:18:00) [7]
> Неправильно, будет прямая линия
ой ну да
Canvas.LineTo(i, Round(Sin(i)*100) );
а так?
Anatoly Podgoretsky (2006-12-25 15:15:00) [8]> Steep (25.12.2006 15:07:10) [10]
Неправильно, будет прямая линия
Ega23 (2006-12-25 15:15:00) [9]
> TCanvas (опять мастера на меня наедут) находиться в Практически
> любом визуальном компоненте. но лучше использовать PaintBox
TCanvas - суть HDC. Есть действительно у многих визуальных компонентов (но далеко не у всех). Не у всех оно в public.
Steep (2006-12-25 15:09:00) [10]TCanvas (опять мастера на меня наедут) находиться в Практически любом визуальном компоненте. но лучше использовать PaintBox
Steep (2006-12-25 15:07:00) [11]как же не подходит.
тебе нужно рассчитать график
т.е. примерно так
передвигаешь точку в начале рисования MoveTo
Canvas.MoveTo(0, Canvas.height)
затем в цикле рисуешь график своей функции
For i:=0 to 800 do
begin
Canvas.LineTo(i, Sin(i));
end;
Ps. надеюсь у меня правильно мозги работают
Ega23 (2006-12-25 15:07:00) [12]TCanvas никогда компонентом не был (и не будет).
Биритм (2006-12-25 15:07:00) [13]Подскажите где находиться компонент TCavas
Ega23 (2006-12-25 15:07:00) [14]
> Мне нужно построить синусойду, мне кажется Canvas.LineTo
> не подойдёт, хотя может я ошибаюсь
Кажется - креститься надо.
Steep (2006-12-25 15:04:00) [15]
> GDI / GL / DX %-)
самое-то начинаещему?
grisme (2006-12-25 15:03:00) [16]GDI / GL / DX %-)
Биритм (2006-12-25 14:59:00) [17]Мне нужно построить синусойду, мне кажется Canvas.LineTo не подойдёт, хотя может я ошибаюсь
ВаДикДаДик (2006-12-25 14:57:00) [18]А можно поподробнее а то в делфи я новичок
Steep (2006-12-25 14:56:00) [19]
> И вообще можно ли это сделать используя стандартные средства
> Delphi
конечно возможно!
> Подскажите как в делфи построить график по заданной функции
береш TCavas и рисуешь.
Canvas.MoveTo(x,y); передвижение в заданную точку
Canvas.LineTo(x,y); линия в заданную точку
Ega23 (2006-12-25 14:54:00) [20]см. компонент TChart