ПредишенСледващото

В тази статия ще разгледаме няколко начина да се направи графиката на всяка функция. Начертайте графика ще очертаем в компонента на снимката.

Рисуване Pixel

Paint на платно може да бъде най-различни начини. Първият вариант - да рисува пикселите. За тази цел са собственост на пикселите на платно. Този имот е двумерен масив, който е отговорен за цвета на платното. Например Canvas.Pixels [10,20] - съответства на цвета на пиксел с координати (10,20). С множество пиксели могат да бъдат третирани като всяко свойство, което променя цвета чрез определяне на нова стойност пиксел, или за определяне на цвета си, от стойността съхранявани в него. В примера по-долу ние определяме черен пиксел с координати (10,20):

Сега ние ще се опитаме да се направи графика на функция F (X), ако знаем границите на нейните промени Ymax и Ymin. и обхвата на вариация на Xmax и Xmin аргумент. За да направите това, ще пиша потребителска функция, която ще се изчисли стойността на F в точка х, като в същото време ще се върне на максимум и минимум на функцията и нейната аргумент.

функция Tform1.F (х: реално; Var Xmax, Xmin, Ymax, Ymin: реален): реално;
започвам
F: = Sin (х);
Xmax: = 4 * пи;
Xmin: = 0;
Ymax: = 1;
Ymin: = - 1;
Край;

Не забравяйте да посочите заглавието на тази опция в обществеността:

обществен

функция F (х: реално; Var Xmax, Xmin, Ymax, Ymin: реален): реално;

Тук, за по-голяма яснота, ние просто да определят диапазон от възможности за промяна на грях (х) и неговите аргументи по-долу, тази функция ще бъде описана в своята цялост. Параметри ХМАХ, Xmin, Ymax, Ymin - Var, описани с думата, защото те са най-вход-изход, т.е. чрез тях, функцията ще върне изчисляването на стойността на тези данни към основната програма. Ето защо е необходимо да се декларират ХМАХ, Xmin, Ymax, Ymin като глобални променливи в раздела за изпълнение.

Сега ние поставяме формата на бутон и в своята OnClick събитие манипулатор напиши следния код:

процедура TForm1.Button1Click (Sender: TObject);
Var X, Y: реален;
PX, PY: longInt;
започвам
за PX: = 0 до Image1.Width направи
започвам
х: = Xmin + PX * (Xmax-Xmin) /Image1.Width;
Y: = F (х, Xmax, Xmin, Ymax, Ymin);
PY: = TRUNC (Image1.Height- (у-Ymin) * Image1.height / (Ymax-Ymin));
image1.Canvas.Pixels [PX, PY]: = clBlack;
приключи;
приключи;

Този код трябва да се въведе променливите х и у, които са стойностите на аргумента и функция, както и променливи PX и PY, са координатите на пиксела, съответстващи на х и у. Самата процедура включва цикъл за всички стойности на хоризонтални координати на пиксела PX Image1 компонент. Първо, избран PX стойност се преизчислява в съответната стойност х. След извикване на функция F на (х) се определя и стойността Y. Тази стойност се превръща в вертикалната координата на пиксел PY

Рисуване с Pen писалка

В платното там е собственост на Pen - писалка. Този обект, от своя страна има редица свойства. Един имот цвят - цветът, който се прилага към снимката. Второ Ширина имот - ширината на линията е даден в пиксели (по подразбиране е 1).

Стил собственост определя типа на линия и може да отнеме от следните стойности:

Плътната линия, но до> 1 може да бъде оцветен, не-Windows палитра

Всички стилове с инсулти и прекъснати линии са на разположение само когато дебелината на линиите, равен на 1. В противен случай, линиите са привлечени като стабилно.

В платното там PenPos тип имот TPoint. Този имот се определя координатите на платното в текущата позиция на писалката. Преместването на писалката без векторизация се извършва чрез MoveTo (х, у). След повикване този метод координати контур точка (х, у) се превръща в източник, от който да се направи линия във всяка точка с координати (х, у) от LineTo (х, у).

Нека сега да се опитаме да се направи графика на задължително писалката. За да направите това, добавете преди операторът на цикъл:

Image1.Canvas.MoveTo (0, Image1.height DIV 2);

И добави следното изявление преди крайния край цикъл:

Така че трябва да се получи следния код:

процедура TForm1.Button1Click (Sender: TObject);
Var X, Y: реален;
PX, PY: longInt;
започвам
Image1.Canvas.MoveTo (0, Image1.height DIV 2);
за PX: = 0 до Image1.Width направи
започвам
х: = Xmin + PX * (Xmax-Xmin) /Image1.Width;
Y: = F (х, Xmax, Xmin, Ymax, Ymin);
PY: = TRUNC (Image1.Height- (у-Ymin) * Image1.height / (Ymax-Ymin));
image1.Canvas.Pixels [PX, PY]: = clBlack;
Image1.Canvas.LineTo (PX, PY);
приключи;
приключи;

Както вече сте забелязали, ако стартирате програмата, качеството на графики тушовка, много по-добре, отколкото да прави на пиксела.

Както promised'll се напише програма, която намира образец на максимум и минимум на функция. Аз съм малко променена структурата на процедури и функции, за да стане по-ясен. Тук е готов за програмиране на кода:

.
тип
TForm1 = клас (TForm)
Button1: TButton;
Image1: TImage;
процедура Button1Click (Sender: TObject);
частен

обществен
функция F (х: реален): реален;
Процедура Extrem1 (Xmax, Xmin: реален; Var Ymin: реален);
Процедура Extrem2 (Xmax, Xmin: реален; Var Ymax: реален);

приключи;

изпълнение
Строителство е = 1е-4; // точност на една хилядна
Var Xmax, Xmin, Ymax, Ymin: реален;

функционира Tform1.F (х: реален): реален;
започвам
F: = Sin (х);
Край;

// намери минимум функция
Процедура TForm1.Extrem1 (Xmax, Xmin: реален; Var Ymin: реален);
Var х, ч: реален; й, п: цяло число;
започвам
п: = 10;
повторение
х: = Xmin;
п: = N * 2;
Н = (Xmax-Xmin) / п;
Ymin: = F (Xmin);
За к: = 1 до п започвайте
ако е (х)х: = х + Н;
приключи;
До абсолютен (F (Ymin) -f (Ymin + Н))Край;

// намерите максимална функция
Процедура TForm1.Extrem2 (Xmax, Xmin: реален; Var Ymax: реален);
Var х, ч: реален; й, п: цяло число;
започвам
п: = 10;
повторение
х: = Xmin;
п: = N * 2;
Н = (Xmax-Xmin) / п;
Ymax: = F (Xmin);
За к: = 1 до п започвайте
ако е (х)> = Ymax след Ymax: = е (х);
х: = х + Н;
приключи;
До абсолютен (F (Ymax) -f (Ymax + Н))Край;


процедура TForm1.Button1Click (Sender: TObject);
Var X, Y: реален;
PX, PY: longInt;
започвам
// тук трябва да укажете диапазонът на х
Xmax: = 8 * пи;
Xmin: = 0;

// изчисли екстремумите на функцията
Extrem1 (Xmax, Xmin, Ymin);
Extrem2 (Xmax, Xmin, Ymax);

// изготвя графиката на функцията
Image1.Canvas.MoveTo (0, Image1.height DIV 2);
за PX: = 0 до Image1.Width направи
започвам
х: = Xmin + PX * (Xmax-Xmin) /Image1.Width;
Y: = F (х);
PY: = TRUNC (Image1.Height- (у-Ymin) * Image1.height / (Ymax-Ymin));
image1.Canvas.Pixels [PX, PY]: = clBlack;
Image1.Canvas.LineTo (PX, PY);
приключи;
приключи;
край.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!