Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
8-1148479532
Костя_909
2006-05-24 18:05
2007.01.14
В строке buf[0]:= virtualalloc(... Delphi пишет Operator not appl


2-1166686128
Sergey__
2006-12-21 10:28
2007.01.14
Различное поведение НД при вставке и редактировании.


2-1166737977
lluha
2006-12-22 00:52
2007.01.14
DBGrid


2-1166432834
tsv
2006-12-18 12:07
2007.01.14
открытие файла


2-1166873475
Серый
2006-12-23 14:31
2007.01.14
удаление из stringgrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский