Programarea pe delphi

În general, culoarea paleta foarte mult, dar atunci când vine vorba de computer, este posibil să aibă în minte este RGB. (Pentru referință, CKMY paleta, utilizată în derivarea imaginii color pe imprimantă utilizată în industria de imprimare color său principal -. Galben, albastru și roșu, negru, de asemenea, prezente în această paletă, joacă un rol de sprijin, și este o culoare de reglare). După cum sugerează și numele, culorile principale ale paletei - roșu, verde și albastru. Amestecarea acestor culori în proporții diferite, obțineți alte culori și nuanțele lor. De exemplu, la galben, trebuie să luați culorile roșu și verde, și nu iau albastru. Fiecare culoare poate avea un grad diferit de saturare - 0-255 (adică 1 bit). 0 corespunde saturării minim 255 - respectiv maxim.







După o scurtă introducere, să trecem la ceea ce ne place mai mult, la programare. Vom plasa pe formularul TrackBar 3, schimbând poziția glisoarelor, vom schimba saturația fiecărei culori care alcătuiește paleta RGB. Pentru a converti aceste valori într-o culoare a tipului TColor, folosim funcția RGB. Culoarea rezultantă va fi vopsită panoul, care în cazul nostru joacă rolul unui monitor.


Cred că din exemplu este clar că, ca parametri ai funcției RGB, se transmit coeficienții de roșu, verde și albastru. Fiecare schimbare a poziției glisorului solicită rutina SetMomitorColor, astfel încât să putem observa o schimbare de culoare netedă. Cu toate acestea, aceasta nu este singura procedură cauzată de mișcarea cursorului. Să vedem mai în detaliu.








Procedura MoveLabel (prezentată mai jos), după cum sugerează și numele, muta eticheta astfel încât centrul de etichete să fie întotdeauna exact sub cursor. Ca parametri, transferăm componentele în sine, ceea ce face procedura universală pentru toate TrackBars. Următoarea linie stabilește culoarea textului în funcție de saturația actuală a culorilor din paleta RGB, pentru care TrackBar este responsabil. Ultima procedură reprezintă culoarea actuală în diferite formate (luați în considerare acest lucru mai târziu).


Reprezentarea culorilor în diferite formate. În format HTML, puteți specifica culoarea în mai multe moduri. De exemplu, utilizând procedura RGB cunoscută. Dar puteți specifica culoarea în format hexazecimal (din punctul meu de vedere este mult mai convenabil), și se pare că, după cum urmează: #RGB. Aici, R, G, B - valorile culorilor respective în format hexazecimal (de exemplu, # FF0000 - roșu, # 00FF00 - culoare verde, # 0000FF - roșu, respectiv). Color în OpenGL stabilit într-un interval de la 0 la 1 pentru fiecare componentă de culoare, în care 0 - saturație minimă culoare (corespunzând 0 în Delphi) și 1 - makcimalnaya de saturație a culorii (corespunzând la 255 din Delphi). Prin aceasta valoarea curentă a fiecărei componente de culoare este împărțit de 255. Delphi permite, de asemenea tip de transfer de culoare TColor un șir utilizând funcția ColorToString (Color: TColor): string (linie de transfer înapoi în TColor poate StringToColor (funcția const S: string): TColor) .


Acum, despre cum să aflăm culoarea pixelului care ne interesează pe ecran. Funcția GetPixel ne va ajuta în acest sens. Deoarece este imposibil să se determine coordonatele pixelilor "cu ochi", este mai simplu (și mai logic) să obțineți culoarea pixelului aflat sub cursorul mouse-ului. Funcția GetPixel returnează o valoare de tip TColor și pentru a selecta din ea valorile componentelor roșii, verzi și albastre, trebuie să utilizați funcțiile GetRValue, GetGValue și GetBValue, respectiv. Următorul exemplu demonstrează funcționarea acestor funcții.


Și ultimul. Pentru a schimba modurile programului (setarea manuală a culorilor / detectarea automată a culorilor), vom trece peste formularul CheckBox, care va activa / dezactiva cronometrul.







Articole similare

Trimiteți-le prietenilor: