![Старый](images/statusicon/post_old.gif)
13.06.2013, 02:40
|
Прохожий
|
|
Регистрация: 13.06.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
|
|
нужна помощь с графиком
Ребята, такая проблема: необходимо перевернуть график (т.е. чтобы ось Y была направлена вверх).
Код:
unit Lab12_1Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Math, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
function f(x: real): real;
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a, b, h: real;
implementation
{$R *.dfm}
function TForm1.f(x: real): real;
begin
f :=sqr((sin(x+1)));
end;
procedure TForm1.N1Click(Sender: TObject);
var
i, y: real;
j: integer;
begin
a := 0;
b := 3.14;
h := 0.005;
i := a;
{===============================Строим график===========================}
y := f(i);
Canvas.Pen.Color := clBlue;
Canvas.MoveTo(Round(i*100), Round(y*100));
while i <= b do
begin
y := f(i);
i := i + h;
Canvas.LineTo(Round(i*100), Round(y*100));
end;
{=======================================================================}
{===============================Рисуем и подписываем оси================}
Canvas.Pen.Color := clRed;
Canvas.TextOut(5, 5, '0');
Canvas.MoveTo(0, 0);
i := 0;
while i <= b do
begin
i := i + 0.5;
Canvas.LineTo(Round(i*100), 0);
Canvas.LineTo(Round(i*100), 10);
Canvas.TextOut(Round(i*100), 10, FloatToStr(i));
Canvas.MoveTo(Round(i*100), 0);
end;
i := i + 0.5;
Canvas.LineTo(Round(i*100), 0);
Canvas.TextOut(Round(i*100), 10, 'x');
Canvas.MoveTo(0, 0);
j := 0;
while j < 1 do
begin
j := j + 1;
Canvas.LineTo(0, j*100);
Canvas.LineTo(10, j*100);
Canvas.TextOut(15, j*100, FloatToStr(j));
Canvas.MoveTo(0, j*100);
end;
j := j + 1;
Canvas.LineTo(0, j*100);
Canvas.TextOut(15, j*100, 'y');
{=======================================================================}
end;
end.
lmikle: Используем правильные теги!
Последний раз редактировалось lmikle, 13.06.2013 в 07:22.
|