Getpixel determină culoarea punctului, cum funcționează pipeta

Luați în considerare funcția GetPixel (x, y) în Pascal - o subrutină foarte importantă în grafica lui Pascal pentru a lucra cu puncte (pixeli). În pagina Puncte în Pascal. SetPixel PutPixel și am făcut a fost colorat cu un punct în fereastra grafica PascalABC.Net culori diferite, și apoi din pixelii individuali înfățișate forme geometrice - punct, linie, dreptunghi, cerc și elipsă. Adică, sarcina a fost de a circa, de exemplu, vopsea în culoarea predefinită - folosind funcția SetPixel sau GetPixel.







Acum, problema este inversă: este dată o anumită cifră (sau punct), este necesar să se determine culoarea în care este colorată. Acest lucru se face folosind funcția GetPixel.

✎ GetPixel (x, y) - returnează culoarea punctului cu coordonatele (x, y)

Pentru a demonstra folosirea acestei funcții, vom scrie un program simplu în care desenați trei cercuri pline de culoare aleatoare. După aceea, trageți un dreptunghi, care va fi vopsit în aceeași culoare ca și primul cerc.

Getpixel determină culoarea punctului, cum funcționează pipeta

PascalABC.Net, PascalABC

Rulați acest program în PascalABC.Net și vedeți ce sa întâmplat. Mai întâi vopsește primul cerc cu o culoare aleatorie, apoi al doilea și al treilea. Pentru a seta culoarea cercului, folosim procedura SetBrushColor (.), Care setează peria unei anumite culori și este folosită întotdeauna pentru a picta fundalul sau o anumită zonă.

Deci, după ce am tras trei din cercul colorat (hașurată rândurile 6 - 13), există un mesaj că culoarea dreptunghiului este egal cu următoarea culoare a primei runde (linia 19). Prima declarație - SetBrushColor (linia 16) (clWhite) - arată că mesajul va fi înregistrat în dreptunghiul alb. Cel de-al doilea operator este SetFontColor (clRed) (linia 17) - colorează mesajul în roșu (font - font, culoare - culoare). Operatorul SetFontSize (12) (linia 18) - dimensiunea fontului este 12 (Dimensiune). Și, într-adevăr, mesajul este afișat într-un dreptunghi cu coordonatele colțului superior stâng (80, 220) prin intermediul operatorului TextOut (80, 220 „culoare dreptunghi = culoarea primului cerc“) (linia 19).







În cele din urmă, trage dreptunghi, după setarea culorii periei în a treia parte a programului: SetBrushColor (linia 22) (GetPixel (100, 100)) - a defini un punct de culoare cu coordonatele (100, 100). În locul punctului (100, 100) - centrul 1 tur - ar putea lua un alt punct al acelui interval, de exemplu, (110, 90), sau un punct cu coordonatele (x, y), care satisfac inegalitatea (x - 100) 2 + ( y - 100) 2 <70 2 – условие попадания точки (x, y) в круг радиуса 70 с центром (100, 100).

După cum puteți vedea, ca rezultat vom obține trei cerc multicolor și un dreptunghi a cărui culoare se potrivește cu culoarea primei runde. Și toate din cauza faptului că am stabilit culoarea prima cifră utilizând funcția GetPixel (x, y) în Pascal, în ciuda faptului că intervalul de culoare a fost întâmplătoare.

Capătul cu pipetă: determinați culoarea punctului din imagine

Și acum, uita-te la un exemplu mai interesant folosind GetPixel (x, y), arătând, pe ce bază se utilizează „picurător“, în programe grafice, cum ar fi Photoshop, Gimp, Paint.Net, sau altele asemenea (plătit și gratuit). Pentru aceasta avem nevoie pentru a crea un fel de model, apoi făcând clic pe imagine cu butonul din stânga al mouse-ului pe orice punct pentru a defini culoarea folosind funcția GetPixel (x, y).

Deci acest lucru, trebuie să pună în aplicare două rutine: primul este de a crea o (procedură de desen) desen, iar al doilea - pentru a picta un dreptunghi de culoare mici, care se potrivește cu culoarea punctului, apăsând pe ea cu mouse-ul (procedura MouseDown). În primul rând, vom scrie programul în sine pe PascalABC.Net (nu va funcționa pe PascalABC simplu, vezi mai jos):

Programul funcționează după cum urmează: în primul rând, noi numim procedura de desen, care creează o imagine prin utilizarea rutine încorporate care rulează cu pixeli - SetPixel (x, y, c), - în care fiecare punct al dreptunghiului [0, 255] x [0, 255] este atribuit unui anumit culoare. Atunci când faceți clic pe mouse-ul funcționează onmousedown Procedură - un eveniment apăsând butonul mouse-ului, de lucru, de altfel, ca o funcție (deci poate fi atribuit o altă procedură). Această procedură are trei parametri: x, y - coordonatele punctului în momentul clicului și parametrul butonului mouse-ului. Dacă apăsați butonul stâng al mouse-ului, butonul mouse-ului = 1, dacă este corect, apoi butonul mouse-ului = 2.

Astfel, când faceți clic pe butonul mouse-ului, se numește procedura MouseDown, în care calculele sunt efectuate doar atunci când butonul stâng este apăsat (mb = 1). Acțiunile sunt simple: în primul rând GetPixel (x, y) citește coordonatele punctului apăsat și determină culoarea, iar apoi pictează MouseDown dreptunghiul spre dreapta în această culoare, dar, de asemenea, face etichete - cantitatea de culorile roșu, verde și albastru în culoarea (0-255) .

Dacă nu ați început deja programul în PascalABC.Net sau PascalABC, executați și experimentați. De fiecare dată când faceți clic pe un punct, dreptunghiul din dreapta va fi repetat în culoarea corespunzătoare. Încercați să faceți clic pe imagine și apoi pe spațiul alb (culoarea albă este 255 pentru roșu, verde și albastru). Asigurați-vă că culoarea dreptunghiului coincide întotdeauna cu culoarea punctului presat de deasupra cursorului mouse-ului.

Getpixel determină culoarea punctului, cum funcționează pipeta

Aici este o subrutină GetPixel (x, y) - o funcție care returnează culoarea unui punct cu coordonate (x, y).

div> .uk-panoul ">" data-uk-grid-margin "







Trimiteți-le prietenilor: