Текущий архив: 2007.01.14;
Скачать: 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 вся ветка
Текущий архив: 2007.01.14;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.011 c