Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как нарисовать график [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо