Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Примечание

Читайте также:
  1. Примечание
  2. Примечание
  3. Примечание
  4. Примечание
  5. Примечание
  6. Примечание
  7. Примечание.
  8. Примечание.
  9. Примечание.

Рассмотренная программа работает корректно, если функция, график которой надо построить, принимает как положительные, так и отрицательные значения. Если функция во всем диапазоне только положительная или только отрицательная, то в программу следует внести изменения.

 

Программа вывода графика любой функции, используя компоненту Image

unit Unit1;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, ExtCtrls;

Type

TForm1 = class(TForm)

Image1: TImage;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

Button1: TButton;

Edit1: TEdit;

Label1: TLabel;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N1Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

Var

Form1: TForm1;

Implementation

{$R *.dfm}

function www(x:real):real;

Begin

result:=x*x-3*x+2;

end;

procedure TForm1.Button1Click(Sender: TObject);

var x,y:real; i:integer;

Begin

If Edit1.Text<> '' then

Begin

Image1.Canvas.Brush.Color:=clWhite;

Image1.Canvas.Rectangle(0,0,501,501);

Image1.Canvas.MoveTo(0,251);

Image1.Canvas.LineTo(501,251);

Image1.Canvas.MoveTo(251,0);

Image1.Canvas.LineTo(251,501);

Image1.Canvas.MoveTo(241,20);

Image1.Canvas.LineTo(251,0);

Image1.Canvas.LineTo(261,20);

Image1.Canvas.MoveTo(481,241);

Image1.Canvas.LineTo(501,251);

Image1.Canvas.LineTo(481,261);

for i:=1 to 21 do begin

Image1.Canvas.MoveTo(i*25+1,246);

Image1.Canvas.LineTo(i*25+1,254);

Image1.Canvas.TextOut(i*25+1,255,FloatToStr(StrToInt(edit1.Text)/250*(i*25-250)));

Image1.Canvas.MoveTo(246,i*25+1);

Image1.Canvas.LineTo(254,i*25+1);

Image1.Canvas.TextOut(255,i*25+1,FloatToStr(- StrToInt(edit1.Text)/250*(i*25-250)));

end;

Image1.Canvas.TextOut(240,10,'y');

Image1.Canvas.TextOut(480,230,'x');

x:=StrToInt(edit1.Text)/250*(-250);

y:=www(x);

Image1.Canvas.MoveTo(round(X/Strtoint(Edit1.Text)*250+251),

round(-Y/StrToInt(Edit1.Text)*250+251));

for i:=2 to 501 do begin

x:=StrToInt(edit1.Text)/250*(i-251);

y:=www(x);

Image1.Canvas.LineTo(round(X/Strtoint(Edit1.Text)*250+251),

round(- Y/StrToInt(Edit1.Text)*250+251)); end

End

else ShowMessage('введите масштаб');

end;

procedure TForm1.FormCreate(Sender: TObject);

Begin

Image1.Canvas.Brush.Color:=clWhite;

Image1.Canvas.Rectangle(0,0,501,501);

Image1.Canvas.MoveTo(0,251);

Image1.Canvas.LineTo(501,251);

Image1.Canvas.MoveTo(251,0);

Image1.Canvas.LineTo(251,501);

Image1.Canvas.MoveTo(241,20);

Image1.Canvas.LineTo(251,0);

Image1.Canvas.LineTo(261,20);

Image1.Canvas.MoveTo(481,241);

Image1.Canvas.LineTo(501,251);

Image1.Canvas.LineTo(481,261);

Image1.Canvas.TextOut(240,10,'y');

Image1.Canvas.TextOut(480,230,'x');

end;

procedure TForm1.N2Click(Sender: TObject);

begin close; end;

procedure TForm1.N1Click(Sender: TObject);

Begin

MessageDlg('программа рисует функцию, заданную в подпрограмме-функция. В окне масштаб вводится число отрезков на которые разбиваются координатные прямые',mtinformation,[mbok],0)

end;

End.

 




Дата добавления: 2015-02-16; просмотров: 25 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.013 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав