|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.04.2011, 16:33 | #1 |
Пользователь
Регистрация: 30.11.2010
Сообщений: 20
|
График функции
Добрый день!Есть программа построения графика функции,подскажите пожалуйста
Как в нее добавить координатные оси (х,у)? unit graph_unit; interface uses SysUtils, Graphics, Forms, Classes, Controls, StdCtrls, Buttons, ExtCtrls, Windows; type TForm1 = class(TForm) Panel1: TPanel; Image1: TImage; Edit1: TEdit; Edit2: TEdit; BitBtn1: TBitBtn; Label1: TLabel; Label2: TLabel; BitBtn2: TBitBtn; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} const k = 1001; {кол-во точек графика} XN = 50; {начальная координата по х} YN = 10; {начальная координата по у} NX = 5; {число клеток по х} NY = 5; {число клеток по у} var a,b,dx,dy,ymax,ymin : Extended; x,y : Array[1..K] of Extended; xe,ye : Array[1..K] of Integer; lx,ly,xk,yk : Integer; st : String; procedure Line(x1,y1,x2,y2:Integer); Begin with Form1.Image1.Canvas do begin MoveTo(x1,y1); LineTo(x2,y2); end; End; procedure TForm1.BitBtn1Click(Sender: TObject); function f(x:extended):extended; begin f:=exp(x); end;{FUNCTION} var i:Integer; begin with Form1.Image1.Canvas do begin Pen.Color:=clWhite; //очистка области графика Rectangle(0,0,Image1.ClientWidth,Im age1.ClientHeight); Pen.Color:=clBlack; Font.Color:=clBlue; end; xk:=Image1.ClientWidth-10; yk:=Image1.ClientHeight-25; try a:=StrToFloat(edit1.Text); b:=StrToFloat(edit2.Text); except MessageBox(0,'Неверный ввод!','Ошибка!',MB_ICONSTOP); exit; end; dx:=(b-a)/(K-1); ymax:=f(a); //FUNCTION ymin:=ymax; for i := 1 to K do //подсчет координат и определение Begin //максимума и минимума x[i]:=a+dx*(i-1); y[i]:=f(x[i]); //FUNCTION if ymax<y[i] then ymax:=y[i]; if ymin>y[i] then ymin:=y[i]; End; for i:=1 to K do //пересчет координат для построения begin xe[i]:=XN+round((x[i]-a)*(XK-XN)/(b-a)); ye[i]:=YN+round((ymax-y[i])*(YK-YN)/(ymax-ymin)); end; lx:=(XK-XN) div NX; dx:=(b-a)/NX; for i:=1 to (NX+1) do //горизонтальные линии сетки begin line(XN+lx*(i-1),YN,XN+lx*(i-1),YK); str((a+dx*(i-1)):5:2,st); form1.Image1.Canvas.TextOut(XN-20+lx*(i-1),YK+10,st); end; ly:=(YK-YN) div NY; dy:=(ymax-ymin)/NY; for i:=1 to NY+1 do //вертикальные линии сетки begin line(XN,YN+ly*(i-1),XK,YN+ly*(i-1)); str((ymax-DY*(i-1)):5:2,st); form1.Image1.Canvas.TextOut(XN-50,YN-4+ly*(i-1),st); end; with Form1.Image1.Canvas do begin Pen.Color:=clGreen; Pen.Width:=2; for i:=1 to K-1 do //график line(xe[i],ye[i],xe[i+1],ye[i+1]); Pen.Color:=clBlack; Pen.Width:=1; end; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin Form1.Close; end; end. |
27.04.2011, 17:54 | #2 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
Да просто чертите линии по центру имэйджа слева направо и сверху вниз и всё, только цвет поменяйте на отличный от цвет сетки.
Код:
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
Последний раз редактировалось ImmortalAlexSan; 27.04.2011 в 17:58. |
27.04.2011, 18:28 | #3 | |
Пользователь
Регистрация: 30.11.2010
Сообщений: 20
|
Цитата:
|
|
28.04.2011, 02:24 | #4 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 88
|
возможно не работает потому что Image1.Width / 2 всегда будет возвращать действительный тип, а в методах moveto и lineto объекта canvas должны быть только целочисловые параметры
|
30.04.2011, 14:18 | #5 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
adm2010, поставьте вместо "/" "div" (не стал утруждать себя исправлением, думал. что и так понятно будет...)
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
|
02.05.2011, 18:05 | #6 |
Пользователь
Регистрация: 30.11.2010
Сообщений: 20
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
график функции | Максикок | Помощь студентам | 2 | 02.12.2010 21:33 |
График функции | dsf | Общие вопросы C/C++ | 4 | 17.12.2009 23:20 |
График функции | russian-stalker | Общие вопросы Delphi | 2 | 30.09.2009 14:58 |
График функции | Леха | Общие вопросы Delphi | 18 | 16.04.2007 20:50 |