Точка в паскал setpixel и putpixel
Нека поговорим за процедури SetPixel (X, Y, в) и PutPixel (X, Y, в). които имат един и работата w - рисува върху един пиксел на координатите (X, Y) цвят в. Но защо е необходимо - да рисува точката в различен цвят? Фактът, че всяко изображение се състои от точки (пиксели), всяка от които има специфичен цвят и неговите координати Паскал графики прозорец. Във втората част на статията (вж. По-долу), ще покажем как да използвате запълване пикселите за да очертаете правоъгълник в Паскал отсечка, кръг и дори елипса. В същото време, нека да поговорим малко за геометрията.
Прости геометрични обекти в математиката е точка - нещо, което не разполага с размер или обем, или област. Въпреки това, да се направи точка, ще трябва да му се даде поне някои размери (в противен случай е невъзможно да се представят). От точките са изградени всички линии и форми, повърхности и органи - както в самолета и в пространството.
Фигурата се различава от линията? Затворена линия на самолета - това е само граница региона, както и фигурата - част от самолета, който се намира вътре в затворената линия. Един пример на линията е кръг, и съответната цифра - кръг (част равнината) на.
Геометрично тяло е набор от точки в пространството. Просто не всеки набор, както и на цялата поредица от точки, отделени от останалата част на определена граница, наречена на повърхността. Тяло - това е геометрична фигура в пространството. Примери геометрично тяло: куб, тетраедър, сфера, паралелепипед, и др ..
Създаване на изображение в Паскал осъществява чрез използване на растерна графика (растерни). Това означава, че най-малкият елемент на цифрата е една точка, наречена на пиксела. които обикновено са под формата на малки кръгове или квадрати. пиксела - ако приемате всеки растерна графика и много го увеличи, отделните области, които съставляват цялото изображение може да се види. Всеки пиксел има един цвят, и то не може да се раздели на по-малки части.
Друга важна характеристика е неговата пиксел координират в прозореца на графики. се броят от горния ляв ъгъл на дясно (ОХ-ос) и надолу (OY-ос). Ако е така, то тогава има естествена нужда от процедури, които ще определят цветовите координати на пиксел. Или, обратно, наличието на фигурата в прозореца на графиката, че би било интересно да се знае цвета на координатите на пиксел данни.
✎ SetPixel (х, у, с) - тази процедура бои пиксел на координатите (х, у) цвят в.
✎ PutPixel (х, у, с) - Процедурата бои пиксел на координатите (х, у) цвят в.
✎ GetPixel (X, Y) - Връща цвят пиксел с координати (X, Y). Това е функцията, (тъй като тя се връща нещо).
И първите две процедури - SetPixel и PutPixel - са равни, и можете да използвате всеки от тях. За да се демонстрира ефекта на процедурите, нека да напиша няколко прости програми. Но GetPixel (X, Y) функция, ние ще се справим на следващата страница. Но първо, да даде някои цветови константи - имена на стандартни цветове в PascalABC.Net:
Има много други цветови константи, но ние все още ще бъде достатъчно.
Така че, опитайте се да се направи точка в PascalABC.Net координати, като например (300, 200), боядисани в червено. Така че ние го видях, той пише до думата "точка". За да направите това, да създаде една проста програма, чрез включване на модула GraphABC:
Код PascalABC.Net, PascalABC
Стартирайте приложението и се опитайте да намерите малко червена точка точно над лявата част на думата "точка" в открита графичен прозорец. Това е най-пиксел на координатите (300, 200). Но въпросът за създаване не се интересувам. Ако се направи набор от точки, идващи една след друга, например, в хоризонтална посока, тя щеше да има ред. Нека да го направя.
Изграждане на линия и дебела линия
Как да се изгради линия в PascalABC.Net използване точки? Изграждане на линия от точки, като всеки път запис SetPixel (или PutPixel), това не е правилната процедура, тъй като тя би трябвало да рекорд SetPixel огромен период от време. Вместо това, в сградата могат да бъдат подредени в една линия, в която, стъпка по стъпка, точките сами ще се наредят в права линия.
Равен линия от точка с координатите (100, 200) до точка (400, 200). Както можете да видите, тази линия е успоредна на говедото на ос (хоризонтална в нашето разбиране), тъй като в началото и в края на сегмента имат еднакви координира у = 200. По този начин, промяната ще има само за координиране на х - 100-400, както и за това ние използваме за контур ( с параметър) и процедура SetPixel. Това е, което програмата имаме:
Код PascalABC.Net, PascalABC
Създадена контактна линия е с дебелина 1 пиксел. И да се направи дебела линия. Ние трябва, разбира се, да се изгради няколко реда наблизо, ги наслагва, така да се каже един към друг толкова пъти, колкото дебелината на линията. Тъй като ние ще се промени не само на х, а и у, тогава не можем да направим без приложен двоен цикъл. Във външния контур ще промени у, и по вътрешната - координата х. В резултат на нашите разсъждения:
Код PascalABC.Net, PascalABC
правоъгълник граница
запълнен правоъгълник
Как да нарисува правоъгълник в PascalABC.Net използване SetPixel PutPixel или процедура? За да се запълни правоъгълника и да е цвят със същия метод, както при създаването на дебела линия: са изготвени в сегменти на един пиксел дебела, един след друг, докато общата им дебелина не достига дължина от някои от страните на правоъгълника. Малко преформатиране програмен код смела линия. получаваме:
Код PascalABC.Net, PascalABC
направи кръг
Как да се направи един кръг в PascalABC.Net използване точки? Възможно е да не боя целия правоъгълник, и някаква част от него, например, кръг, квадрат, разположен в средата на противоположни върха с координати (x0 - R, Y0 - с) и (x0 + R, Y0 + К). Ние знаем, че уравнението на окръжност, центърът на точка от А радиус R е както следва (x0 y0.):
Но ние се нуждаем не е кръг, а кръгът, който е "вътре" на кръга. Целият този набор от точки (х, у), при които разстоянието до центъра Не повече R (x0 Y0.):
По този начин, за да нарисува кръг в квадрат, той трябва да бъде точка за проверка на изпълнението на посочените неравенства: ако е вярно, тогава точката (х, у) са оцветени. Ето съответната програма:
Начертайте попълнено елипса
Как да се направи пълна елипса PascalABC.Net използване точки? За това се използва елипса вписан в правоъгълник с координатите на противоположните върховете (х1. Y1) и (х2. Y2), за които х2> x1. y2> y1. На първо място, ние отбелязваме, че уравнението на елипса с центъра на произхода и semiaxes А и Б, както следва:
Но тъй като ние трябва да се боя от вътрешната страна на елипсата, то уравнението ще стане попълнено неравенство елипса:
Страна на правоъгълника, успоредни на координатните оси. Това означава, че координатите на центъра са равни на половината от сумата на координатите на противоположни върха: x0 = (x1 + х2) / 2, Y0 = (y1 + Y2) / 2. Но как да се намери и б? Тази страна на правоъгълника разделена на две (поради което те се наричат полуоси): А = (х2 - х1) / 2, б = (y2 - y1) / 2. С оглед на това, неравенството попълнено елипса става:
Код PascalABC.Net, PascalABC
Както се вижда от данните на елипсата и кръга, създаване на изображения с помощта на запълване пикселите има значителен недостатък: рисуване граници не се появяват много гладки, сякаш пристъпи. Това е разбираемо: след като всички пиксели - няма смисъл в геометричния смисъл на думата, които нямат размера, но все пак малките квадрати или кръгове. Тогава защо не се стъпки на всички снимки и чертежи? - Вие питате. Да, защото има така наречените анти-псевдоними. Същността на този метод се състои главно в това, че в непосредствена близост до граничния пункт, за да замени по-леки или по-точно, най-близо в цвят на заден план, защото от това, което създава ефект на плавен преход.
Понякога обратната ситуация, когато не е необходимо да се изглади имиджа, като се прави гладка граница (особено геометрични фигури), тъй като тя беше замъглено. Това се прави по следния начин: да отнеме няколко съседни пиксели на изображението, имащи различни цветове нормално, а на мястото на пикселите на един и същи цвят, което съвпада с цвета на един пиксел. Вземете снимка с много уголемени пиксела.
Разделение> .uk панел ">" данни-UK-решетка-марж>