Munka szín Delphi, Delphi, Delphi komponens Delphi forrás
Munka szín Delphi
A játékok és grafikai csomagok, hogy a bájt talált alkalmazást. Gyakran azt jelzi, az átláthatóság, hanem irodai alkalmazások egyszerűen figyelmen kívül hagyja.
Mint már tudjuk, egy bájt vehet értékek 0-255 (decimális formában), vagy 0 FF (hex). Tehát hexadecimális szín fog kinézni SOOFFFFFF. Csak akkor azonnal meg kell jegyezni, hogy az első két nullát - ez egy másik byte, akkor megy FF kék, majd zöld és FF az utolsó FF piros. Kiderül, hogy a memóriában tárolja a színét BGR (fordított sorrendben). Abszolút piros szín lesz egyenlő $ 000000FF. teljesen zöld - $ 0000FF00. és kék - S00FF0000.
Próbáljunk megtanulni, hogyan kell dolgozni színes gyakorlatban, ugyanakkor, és megismerkedhetnek a szükséges funkciókat. Hozzon létre egy új alkalmazást, és telepítse a komponensek rajta ábrán látható.
Tehát formájában három tSzerkesztés komponenst. A vörös összetevő neve RedEdit, zöld - GreenEdit, Ja, és SINvGO - BlueEdit. Szintén a forma van egy gomb a színváltozás (a neve nem fontos), és CoiorDialog eleme a színváltozás.
Ha létre saját példát, próbálja fel mindent, amint az a fenti ábrán (közelebb a jobb széle), mert a bal fog készíteni a téren.
Egy esemény gomb # 111; nKattints levelet látható kódot lista:
eljárás TFormi.ButtonlClick (Sender: TObj ECT);
A var bejelentett egy változó egész típusú Longint. Ez egész 4 byte, akkor tárolására használt szín értékeket.
Az első sor egy ablak mutatja ColorDialogl.Execute színe megváltozik. Ha a felhasználó nem választja a szín (azt mondja, ha nem design), a kivitelezés az eljárás megszakad útján kilép.
Ezután a kiválasztott szín ColorDialog1 .color a TCoior típusú alakítjuk egy egyszerű számot coiorToRGB funkciót. Ezt a funkciót kell át a színes formában TCoior (átadjuk ColorDialogl.color), és visszatér egy egész 4 byte-os számot írunk egy változóban. CoiorToRGB funkciót végez az egyik nagyon fontos, akció-tisztítja az első bájt, ami csak nem hordozza a szemantikai terhelés 24 bites RGB rendszer.
A következő sorban a feladat a beviteli sor RedEdit vörös színű komponens értékeket. Ehhez először használta GetRValue funkciót. Ő továbbított szín érték egy egész szám (változó). Az eredmény egy egybájtos szám, amely jelzi azt az értéket a piros komponens. Mivel result- számot, mielőtt rendelt bemeneti vonal, azt át kell alakítani egy string. Ehhez lefordítani szöveget ismerős funkciók is IntToStr.
Mi nem ugyanaz a dolog, hogy a zöld a következő kódsort. Csak a zöld komponenst használunk GetGValue funkciót.
A kék komponens használt GetBValue funkciót. Tehát, elvégre ez megtörtént, szakítottunk a színe a 4 bájtos változó egyedi bájt szín és fújt őket a megfelelő bemeneti vonal.
Akkor meg kell, hogy ablakhoz húzott egy hívást Újrarajzolja módszer.
Mert OnPaint esemény levelet az alábbi kódot:
eljárás TForml.FormPaint (Sender: TObj ECT); kezdődik
StrToIntDef (GreenEdit.Text, 0), StrToIntDef (BlueEdit.Text, 0));
Canvas.Rectangle (10,10, 250, 150);
Itt meg kell tennünk a fordított akció - viszont a három komponens a színe a beviteli mezők egyetlen szín értékét. Használunk erre a funkció RGB (R, G, B). Ez a funkció a három paraméter, melyek egész számok.
- r - piros érték.
- g - az értéke zöld.
- in - az értéke a kék.
Mivel a paraméterek kerülnek továbbításra feltüntetett értékek a megfelelő bemeneti vonal, előzetes átalakítás a vonalak a számuk.
Az eredmény a színkonverziós színű rekord ecsettel. Ezután egy téglalapot rajzol, ahol a háttér színe az egyik, hogy mi választottuk.
És az utolsó - létrehoz egy eseménykezelő # 111; nA minden bemeneti sor.
- Jelölje ki a beviteli sorban a piros szín.
- Tartsa lenyomva a Shift, kattintson a fennmaradó sorokat.
Van minden a bemeneti vonalak szürke keretek kell emelni. Most megy a Object Inspector az Események lapon, és kattintson duplán egy eseményre # 111; nA, hogy hozzon létre egy kezelő azonnal az összes kiválasztott komponensek. Úgy írni a következő kódot:
eljárás TForm1.RedEditChange (Sender: TObject);
Próbáld futtatni ezt a példát. Most válassza bármilyen színben, és láthatjuk a komponensek a színt. Azt is megváltoztathatja az értékeket közvetlenül a beviteli húrok, és az eredmény azonnal tükröződik a színe a téglalap.

VIGYÁZAT. Ne feledje, hogy egyik összetevője színe nem lehet több, mint 255, különben az alkatrész mérete meghaladja az bájt.
És most nézd meg a konstans, ami már beszerzett a alapszín. Akkor ténylegesen használni őket a programokban és rendelni, mint korábban volt a helyzet a példa. Ez nem soroljuk fel az összes állandók, mert meg tudod csinálni őket bármikor találni, ha rákattint az objektum ellenőr a színes tulajdonságait az alkatrészeit. Minden, amit látsz a listán - ez egy állandó, amelyet fel lehet használni. Ez a módszer viszonylag egyszerű, mert ha egyszer is látható és állandó színt.