|
#1
|
||||
|
||||
Графика
ПРОГРАММУ ДЕЛАЛА НЕ САМА РАЗБИРАЛИ КАК ТО НА ПАРЕ. И НЕЧЕГО ТОЛКОМ НЕ ПОНЯЛА. НЕ ЗНАЮ КАК ПЕРЕДЕЛАТЬ ПРОМЕЖУТКИ ПО ОСЯМ Х и У что бы были 1 -1 Помогите Пожалуйста))
Кто тут разбирается Код:
var Form1: TForm1; Mashtab:integer; implementation {$R *.dfm} // границы вывода графика const a = -3*pi; b = 3*pi; // сам график function f(X:real) : Real; begin Result := sin(2*x); end; procedure TForm1.FormPaint(Sender: TObject); var x,y:Real; i,k:Integer; begin Canvas.Pen.Color:=clWhite; Canvas.Brush.Color:=clWhite; Canvas.Rectangle(0,0,Width,Height); Canvas.Pen.Color:=clBlack; Canvas.MoveTo(ClientWidth div 2,0); //Вертикальна ось Canvas.LineTo(ClientWidth div 2,ClientHeight); Canvas.MoveTo(0,ClientHeight div 2); //горизонтальная ось Canvas.LineTo(ClientWidth,ClientHeight div 2); Canvas.MoveTo(ClientWidth - 10,ClientHeight div 2 - 5); //стрелочка на горизонтальной оси Canvas.LineTo(ClientWidth,ClientHeight div 2); Canvas.LineTo(ClientWidth - 10,ClientHeight div 2 + 5); Canvas.MoveTo(ClientWidth div 2 - 5,10); //стрелочка на вертикальной оси Canvas.LineTo(ClientWidth div 2,0); Canvas.LineTo(ClientWidth div 2 + 5,10); //---Штрихи по положительной оси x--------------------------------------------- x:=0; k:=1; i:=ClientWidth div 2; while i < ClientWidth do begin if x > k then begin Canvas.MoveTo(i,ClientHeight div 2 - 5); Canvas.LineTo(i,ClientHeight div 2 + 5); Canvas.TextOut(i-2,ClientHeight div 2 + 5,IntToStr(k)); k:=k+1; end; x:=x + 1/mashtab; i:=i + 1; end; //---Штрихи по отрицательной оси x--------------------------------------------- x:=0; k:=- 1; i:=ClientWidth div 2; while i > 0 do begin if x < k then begin Canvas.MoveTo(i,ClientHeight div 2 - 5); Canvas.LineTo(i,ClientHeight div 2 + 5); Canvas.TextOut(i-2,ClientHeight div 2 + 5,IntToStr(k)); k:=k - 1; end; x:=x - 1/mashtab; i:=i - 1; end; //---Штрихи по отрицательной оси y--------------------------------------------- y:=0; k:=1; i:=ClientHeight div 2; while i < ClientHeight do begin if y > k then begin Canvas.MoveTo(ClientWidth div 2 - 5,i); Canvas.LineTo(ClientWidth div 2 + 5,i); Canvas.TextOut(ClientWidth div 2 + 5,i-5,IntToStr(-k)); k:=k + 1; end; y:=y + 1/mashtab; i:=i + 1; end; //---Штрихи по положительной оси y--------------------------------------------- y:=0; k:=-1; i:=ClientHeight div 2; while i > 0 do begin if y < k then begin Canvas.MoveTo(ClientWidth div 2 - 5,i); Canvas.LineTo(ClientWidth div 2 + 5,i); Canvas.TextOut(ClientWidth div 2 + 5,i-5,IntToStr(-k)); k:=k - 1; end; y:=y - 1/mashtab; i:=i - 1; end; //-------сам график------------------------------------------------------------ Canvas.Pen.Color:=clRed; // в первую точку x:=a; y:= f(x); Canvas.MoveTo(ClientWidth div 2 + Round(x*mashtab), ClientHeight div 2 - Round(y*mashtab)); while x < b do begin x:= x + 1/mashtab; y:= f(x); Canvas.LineTo(Round(x*mashtab) + ClientWidth div 2, ClientHeight div 2 - Round(y*mashtab)); end; end; procedure TForm1.FormResize(Sender: TObject); begin Form1.FormPaint(Sender); end; procedure TForm1.FormCreate(Sender: TObject); begin Mashtab:=50; end; procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin mashtab:=mashtab + 10; FormPaint(Sender); end; procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if mashtab>10 then mashtab:=mashtab - 10; FormPaint(Sender); end; end. Последний раз редактировалось MiLa=)), 29.05.2012 в 15:58. |
#3
|
||||
|
||||
СПАСИБО БОЛЬШОЕ))
|