Getpixel meghatározza a színét a lényeg, hogy a pipetta

Tekintsük GetPixel funkció (x, y) pascal - nagyon fontos a grafikonon alprogramjának Pascal pöttyökkel (pixel). Oldal pontot Pascal. SetPixel PutPixel és ezt tettük festettük egy pont a grafikus ablakban PascalABC.Net különböző színű, majd az egyes pixelek ábrázolt geometriai formák - pont, vonal, téglalap, kör és ellipszis. Ez a feladat az volt, hogy például a kör, festeni egy előre kijelölt szín - használatával SetPixel vagy GetPixel funkciót.

Most az a feladat, az inverz: adott egy bizonyos értéknél (vagy pont), akkor meg kell határozni, milyen színben van festve. Ezt használja GetPixel funkciót.

✎ GetPixel (x, y) - visszaadja a szín pont koordinátái (x, y)

Annak igazolására, a példa a használatára ez a funkció, írj egy egyszerű program, amely levonja három véletlenszerűen árnyékos körhöz színét. Miután amelyek több és egy téglalapot, árnyalt ugyanolyan színű, mint az 1. forduló.

Getpixel meghatározza a színét a lényeg, hogy a pipetta

Kód PascalABC.Net, PascalABC

Futtatás a PascalABC.Net, hogy mi történik. Először festeni az első fordulóban a véletlenszerű színt, majd egy második és egy harmadik. Ahhoz, hogy adja meg a színskála segítségével SetBrushColor eljárás (.), Amely tartalmazza a színes ecset és mindig is töltse ki a háttérben, vagy valamilyen területen.

Tehát, miután felhívták három árnyékos színes kör (sorok 6-13), van egy üzenet, hogy a szín a téglalap egyenlő a következő szín az első fordulóban (19. sor). Az első állítás - SetBrushColor (clWhite) (line 16) - azt mutatja, hogy az üzenet kerül rögzítésre a fehér téglalap. A második állítás - SetFontColor (clRed) (17. sor) - fest egy üzenetet, piros színű (betűtípus - betűtípus, szín - szín). SetFontSize operátor (12) (18. sor), - a betűméret 12 (Size - méret). És valóban, az üzenet megjelenik egy téglalapot a koordinátákat a bal felső sarokban (80, 220) keresztül TextOut operátor (80, 220 „négyszög color = szín az első kör”) (19. sor).

Végül felhívja a téglalapot, miután a színe az ecset, a harmadik része a programnak: SetBrushColor (GetPixel (100, 100)) (22. sor) - meghatározzák a színes pont koordinátái (100, 100). Ahelyett, hogy az a pont (100, 100) - a központ a 1. forduló - kerülhet egy másik pontja, hogy a tartomány, például, (110, 90), vagy egy pont koordinátái (x, y), kielégíti az egyenlőtlenséget (x - 100) 2 + ( y - 100) 2 <70 2 – условие попадания точки (x, y) в круг радиуса 70 с центром (100, 100).

Mint látható, ennek eredményeként megkapjuk a három színes kör és egy téglalap, amelynek színe megegyezik a színe az első fordulóban. És mindez azért, mert az a tény, hogy mi határozza meg a színét az első szám a GetPixel funkció (x, y) Pascal, annak ellenére, hogy a különböző színű véletlenszerű volt.

Pipetta: színfelismeréshez pont ábrán

És most nézd meg egy érdekes példa a GetPixel (x, y), bemutatva, milyen alapon tudom használni „csepegtető” grafikai programok, mint a Photoshop, Gimp, Paint.Net vagy hasonlók (fizetett és ingyenes). Ehhez létre kell hoznunk valamilyen mintát, majd a képre kattintva az egér bal gombjával bármely pontján meg kell határozni annak színt GetPixel funkció (x, y).

Tehát ez azt kell végrehajtani két rutin: az első az, hogy hozzon létre egy rajz (rajz eljárás), és a második - festeni egy kis színes téglalap, amely megegyezik a színe a lényeg nyomja rá az egérrel (MouseDown eljárás). Először is, mi írjuk a programot magát PascalABC.Net (sima PascalABC nem fog működni, lásd alább.)

A program a következőképpen működik: először hívjuk a rajz eljárás létrehoz egy kép segítségével beépített rutinok fut a pixelek - SetPixel (x, y, c), - ahol minden egyes pontja a téglalap [0, 255] x [0, 255] van rendelve egy bizonyos színét. Aztán, ha rákattint az egér működik onMouseDown eljárás - az esemény lenyomva az egér gombot, a munka, az úton, mint egy funkciót (így lehet rendelni egy másik eljárás). Ezt az eljárást három paraméter: x, y - pont koordinátáit idején kattintva az egérrel, és a paraméter mousebutton. Ha az egér bal gomb megnyomásakor a mousebutton = 1, ha a jobb oldalon, majd mousebutton = 2.

Így, ha megnyomja az egér gombját okozta a MouseDown eljárás, amelyben a számításokat végezni csak akkor, ha a bal gombot (mb = 1). Hozzászólások egyszerűek: az első GetPixel (x, y) így a koordinátákat a préselt pont és meghatározza a színét, majd MouseDown festi a téglalap jobb ez a szín, hanem teszi a címkék - az összeg a vörös, zöld és kék színek a színes (0-255) .

Ha még nem kezdődött el a programot PascalABC.Net vagy PascalABC, majd végezzük el a kísérletet. Minden alkalommal, amikor rákattint bármelyik pontján a téglalap jobb színe megváltozik a megfelelő színt. Próbálja a képre kattint, majd a fehér térben (fehér színű - ez 255 vörös, zöld és kék). Ügyeljen arra, hogy a szín a téglalap mindig ugyanaz, mint a szín a pixel kattintott az egérrel.

Getpixel meghatározza a színét a lényeg, hogy a pipetta

Itt egy lány GetPixel rutin (x, y) - függvény, amely visszaadja a színét a pontok koordinátái (x, y).

div> Uk-panel „>„data-uk-grid-margin>