Главная страница
    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.013 c
6-1149488733
sound81
2006-06-05 10:25
2007.01.14
Проверка актуальности антивирусных баз


1-1163990576
kernel
2006-11-20 05:42
2007.01.14
ShellListView&amp;Multiselect


15-1166559881
Kolan
2006-12-19 23:24
2007.01.14
Поучавствуйте в маркетинговом исследовании :)


2-1167012893
impuls
2006-12-25 05:14
2007.01.14
Операция сдвига


15-1166734558
tesseract
2006-12-21 23:55
2007.01.14
все благодарности - Павлу, плакалъ :-)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский