Lucrul cu culoarea delphi, delphi, delphi, surse delphi

Lucrul cu culoarea în Delphi

În jocurile și pachetele grafice, acest octet a fost folosit. Deseori indică transparența, dar în aplicațiile de birou este pur și simplu ignorată.







După cum știți deja, un octet poate lua valori de la 0 la 255 (în formă zecimală) sau de la 0 la FF (în hexazecimal). Deci, în formă hexagonală, culoarea va arăta ca SOOFFFFFF. Doar aici trebuie remarcat imediat că primele două zerouri sunt un extra octet, apoi mergi FF pentru albastru, apoi FF pentru verde și ultimul FF pentru roșu. Se pare că în memorie culoarea este stocată ca BGR (în ordine inversă). Culoarea roșie absolută va fi $ 000000FF. absolut verde - $ 0000FF00. iar cea albastră este S00FF0000.

Să încercăm să învățăm cum să lucrăm cu culoarea în practică, în același timp și să ne cunoaștem funcțiile necesare. Creați o nouă aplicație și instalați componentele acesteia, așa cum se arată în Fig.

Deci, există trei componente TEdit pe formular. Pentru componenta roșie, sunați RedEdit, GreenEdit pentru verde și BlueEdit pentru albastru. De asemenea, în formular există un buton pentru schimbarea culorilor (numele nu contează) și componenta CoiorDialog, pentru a schimba culoarea.

Dacă creați singur un exemplu, încercați să plasați totul așa cum este prezentat în imaginea de mai sus (mai aproape de marginea dreaptă), deoarece în stânga vom desena un pătrat.

Pentru evenimentul butonului # 111; nclick scrieți codul afișat în listă:

procedura TFormi.ButtonlClick (expeditor: TObj ect);

În secțiunea var, este declarată o variabilă a întregului tip Longint. Acesta este un număr întreg de 4 octeți, va fi utilizat pentru a stoca valoarea culorii.

Prima linie prezintă ColorDialogl.Execute Change Color WINDOW. Dacă utilizatorul nu a selectat o culoare (aceasta este indicată de instrucțiunea dacă nu), procedura este terminată cu ieșirea.

Apoi, culoarea selectată ColorDialog1 .color din tipul TCoior este convertită la un număr prime utilizând funcția coiorToRGB. Această funcție trebuie să treacă prin culoare ca TCoior (treceți ColorDialogl.color) și returnează întregul număr de 4 octeți pe care îl scriem la variabila c. Funcția CoiorToRGB efectuează o acțiune foarte importantă, curățând primul octet, care pur și simplu nu suportă sarcină semantică în sistemul RGB pe 24 de biți.

Următoarea linie este asignarea valorii de culoare roșie la linia de intrare RedEdit. Pentru a face acest lucru, mai întâi utilizați funcția GetRValue. Acesta trece valoarea de culoare ca un întreg (variabila c). Rezultatul este un număr de un singur octet care indică valoarea componentei roșii. Deoarece rezultatul este un număr, înainte ca el să fie atribuit liniei de intrare, acesta trebuie convertit într-un șir. Pentru a face acest lucru, îl traducem în text folosind funcția familiară IntToStr.







Același lucru se face și cu culoarea verde în următoarea linie de cod. Numai pentru a obține componenta verde este funcția GetGValue.

Pentru a obține componenta albastră, utilizați funcția GetBValue. Astfel, după toate aceste operații, am rupt 4 octeți de culoare de la variabila c în octeți separați prin culori și le-am dus în liniile de intrare corespunzătoare.

După aceea, trebuie să obțineți fereastra care urmează să fie desenată apelând metoda Repaint.

Pentru evenimentul OnPaint, scrieți următorul cod:

procedura TForml.FormPaint (expeditor: TObj ect); începe

StrToIntDef (GreenEdit.Text, 0), StrToIntDef (BlueEdit.Text, 0));

Canvas.Rectangle (10, 10, 250, 150);

Aici este necesar să facem acțiunile inverse - să convertim cele trei culori constitutive de la liniile de intrare într-o singură valoare de culoare unică. Pentru aceasta vom folosi funcția rgb (r, g, c). Această funcție are trei parametri și toți sunt numere întregi.

  • r este valoarea culorii roșii.
  • g este valoarea verde.
  • c - valoarea culorii albastre.

Ca parametri, valorile indicate în liniile de intrare corespunzătoare sunt transferate, cu conversia lor preliminară de la șiruri la numere.

Rezultatul conversiei culorilor este scris în culoarea pensulei. După aceea, desenați un dreptunghi a cărui culoare de fundal va fi cea pe care am ales-o.

În cele din urmă, creați un handler de evenimente # 111; schimbare pentru toate liniile de intrare.

  1. Selectați linia de introducere pentru roșu.
  2. În timp ce țineți trecerea, faceți clic pe restul liniilor.

Ar trebui să selectați toate liniile de introducere în cadre gri. Acum mergeți la inspectorul de obiecte din fila Evenimente și faceți dublu clic pe eveniment # 111; nchange pentru a crea un handler pentru toate componentele selectate simultan. În acesta scrieți următorul cod:

procedura TForm1.RedEditChange (expeditor: TObject);

Încercați să rulați acest exemplu. Acum, selectați o culoare și veți vedea componentele respectivei culori. Puteți chiar modifica direct valorile din liniile de intrare, iar rezultatul va reflecta instantaneu culoarea dreptunghiului.

Lucrul cu culoarea delphi, delphi, delphi, surse delphi

ATENȚIE. Rețineți că niciuna dintre culorile constituente nu poate fi mai mare decât 255, altfel componenta va depăși dimensiunea maximă a octeților.

Acum, familiarizați-vă cu constantele deja pregătite pentru culorile primare. De fapt, le puteți folosi în programele dvs. și le puteți atribui, așa cum ați făcut deja în exemplul respectiv. Toate constantele nu vor fi listate aici, pentru că le puteți găsi în orice moment făcând clic pe inspectorul de obiecte din proprietatea de culoare a oricărei componente. Tot ceea ce vedeți în această listă sunt constantele pe care le puteți utiliza. Această metodă este destul de convenabilă, deoarece puteți vedea imediat constanta și culoarea.

Ajutați proiectul! Spuneți prietenilor dvs. despre acest site:







Articole similare

Trimiteți-le prietenilor: