Learning osztály ccanvas

tartalomjegyzék

Döntetlen a MetaTrader 5 nem nehéz, meg kell tudni, hogy csak néhány árnyalatokat. Például, hogy a terminál képernyőjén is. Pontosabban, mi érdekli, milyen a grafikus teljesítményt a terminál képernyőjén. Végtére is, a képernyő maga a grafikon is megjelenik a háttérben, és meg lehet jeleníteni az előtérben. Erről a helyről függ a kimeneti színt a képernyőn. Egyes grafikus objektumok, amikor megjelenik színe megváltozhat a kereszteződés területen.

Mielőtt a közvetlen rajzot CCanvas osztályban. meg kell tanulni néhány kapcsolatos meghatározások színfeldolgozásnak. Például, és hogy az ilyen átláthatóság, hogy egy alfa-csatornát.

Átláthatósági, azt hiszem a legfontosabb technológia, amely segítségével vértezze fel a képet. Például az átláthatóság valósítható szebb felület - a zökkenőmentes átmenetet a színt vagy árnyalatot. Árnyék ad mennyisége és vizuálisan grafikus objektum tompítsa a széleit a tárgyat.

1. Átláthatóság (Alpha)

Élünk, egy háromdimenziós világban, és érzékelik a tárgyak körül bennünket terjedelmes. A kötet a tárgyak körülöttünk szoktuk látni, sőt érezni. A háromdimenziós világban tudjuk megkülönböztetni, hogy melyik tárgy közelebb vagy távolabb van tőlünk.

Azonban néhány példány lehet áttetsző. Például, hogy egy átlátszó üveg csésze egy áttetsző folyadék öntjük azt kék háttérben. Az üvegen keresztül a folyadék látható hátsó kék háttér. Ezen túlmenően, az átláthatóság foka egy folyadék függ részletes háttérben.

Learning osztály ccanvas

Ábra. 1. Ismerős pillantást a hangerő

Az átláthatóság ebben a példában, és nem virtuális illuzórikus. Az átláthatóság ebben az esetben tekintik magától értetődő.

Ha egy kép jelenik meg a számítógép képernyőjén különböző - egy kétdimenziós pixel mátrix kijelzők: megjelenített kép mátrix magassága és szélessége, de nincs harmadik lehetőség - mélységben. Ezért nem lehetséges, hogy gondoskodjon a pixelek egymástól - hogyan szimulálja a helyzet: az alsó pixel - sárga háttérrel, a felső pixel - áttetsző üveg. Minden olyan kép, háromdimenziós és reális tárgyat a monitor - ez egy illúzió, ami úgy érhető el színjátékkal és növényzet.

Tekintsük a példa egy kép, amely lehet osztani két rétegből áll: az alsó réteg - egy kék háttér és a felső réteg - a pohár az átlátszatlan folyékony. Hogyan néz ki a képernyőn:

Learning osztály ccanvas

Ábra. 2. Az átlátszó üveg

Az eredményül kapott kép teljesen átlátszó üveg. De hozzá (változás) az átláthatóság szükség van az összes kép színei a alakítjuk argB-színnel jelennek meg.

2. argB színes ábrázolás

Mintegy üveg átláthatóság, én nem felejtettem el. Részletek erről a kérdésről lesz szó a második részben.

ArgB színformátumból - 4 byte típusú uint. ahol a következő értékek vannak rögzítve a sorrendben az alfa-csatorna, piros, zöld, kék. Azaz, hogy az átláthatóság a szín RGB formátum extra byte, melynek értéke az átláthatóság - alfa-csatorna.

Az alfa értéket adunk egy értéket 0 (szín overlay pixel a felső réteg nem változtatja meg a mögöttes kijelző pixel az alsó réteg), hogy 255 (teljes szín szuperponált, és átfedi egy alatta színes pixel). színtranszparenciát szempontjából százalékos alábbiak szerint kell kiszámítani:


Azaz, minél kisebb az alfa-érték, annál áttetsző színű. Tehát, ha tudjuk, átláthatóságát, hogy szeretnénk elérni, az alfa értéke a következőképpen számítható ki:


Átalakítani egy színes képviselet argB ColorToARGB funkció (szín, alfa).

3. sematikus rajza tárgyak a terminál

Ahhoz, hogy jobban megértsük, hogy a színes feldolgozása, úgy a rendszer a kölcsönös helyzetének grafikus objektumok a két grafikus beállítási lehetőségek: a grafikon a háttérben, és a menetrend szerint.

3.1. A grafikon a háttérben

Jelölje be ezt a beállítást a következők lehetnek: jobb klikk a gráf, akkor válassza ki a legördülő menüből válassza ki a „Tulajdonságok”. És megy „Általános” fülre.

Learning osztály ccanvas

Ábra. 4. Menetrend a háttérben

Ablakgrafikáknál a terminál négy rétegből áll. A két külső réteg ( „háttér” és a „új ismeretek”) lehet levonni:

Learning osztály ccanvas

Ábra. 5. A program a diagram ablak


A háttérben (háttér), és az előtérben grafikus elkészítésekor egymásra összhangban ideje annak létrehozását.

Azaz, az alsó réteg „Háttér” réteg és „új” lesz a legtöbb „régi” grafikus objektumok. Lesz egymásra a tetején egy „fiatal” grafikus objektumok.

Learning osztály ccanvas

Ábra. 6. Az elrendezés tárgyak, attól függően, hogy az idő a teremtés

Nem minden grafikus objektumok átfedik egymást teljesen, anélkül, újrafestés a területen (vagy mezők) metszéspontja az alatta lévő grafikus objektumokat.

Az alábbi táblázat összefoglalja a jellemzőit a grafikus objektumok. és a táblázat után egy magyarázata, hogy átfedésben objektumok álcázzák magukat a kereszteződéseket.

Táblázat. 1. Overlay átláthatóság és a grafika

A példa a három típusú objektumok OBJ_RECTANGLE (téglalapok), úgy újrafestés az algoritmus a csomópontok objektumok álcázzák (xor.mq5 fájl).

Script (file xor.mq5) létrehoz egy fehér háttér színe (0xFFFFFF), és felhívja téglalapok №1 és №2 kék (0x0000FF) egy kitöltött téglalapot №3 piros színben jelenik meg (0xFF0000) kitölteni.

Learning osztály ccanvas

Ábra. 7. Az újrarajzolás. A grafikon a háttérben

Az alak megfordult két kereszteződést a területeken, ahol a szín már átfestett:

  1. Terület №1 - a kapott szín (0x000000) teljesen átlátszó, így a terület látható №1 neperekrashennye háttér és ütemezése;
  2. Terület №2 - a kapott szín (0x00FF00).

Grafikus objektumok, például négyszögek átlépésekor az álca segítségével az algoritmus bitenkénti VAGY művelet.

Ábra esetében. Az alábbi 6. ábra példát mutat újrafesti színek mindkét terület:

Táblázat. 3. Bitorientált XOR Blue + piros + fehér

3.2. A grafikon az előtérben

Ha az ütemezés beállítása „táblázat tetején” elrendezése rétegek chart ablakban eltér a helyet, ahol a menetrend van a háttérben:

Learning osztály ccanvas

Ábra. 8. A program a diagram ablak. Menetrend top

Ha a beállítás grafika „Menetrend fenti” két réteg rajz „új” és a „háttér” be van kötve egy közös réteg. Ez a réteg általában az alsó alatt rétegeket bár és háló.

3.3. Újrafestés a „Schedule top”

Mint látható. 7. úgy az algoritmus újrafestés a csomópontok objektumok álcázzák (xor.mq5 fájl).

Script (file xor.mq5) létrehoz egy fehér háttér színe (0xFFFFFF), és felhívja téglalapok №1 és №2 kék (0x0000FF) egy kitöltött téglalapot készült piros №3 (0xFF0000) kitölteni.

Learning osztály ccanvas

Ábra. 9. újrafestése. A grafikon az előtérben

Ha összehasonlítjuk ábra. 7 és ábra. A 9. ábrán látható, hogy a terület a kereszteződés azonos álruhában.

4. Keverés színeket. A kapott szín

Ahogy azt fentebb már említettük, a kép az átláthatóság a képernyőn - ez csak illúzió. színes játék. Szimulálására ábra. 2. A képernyőn, csak egy kicsit -, hogy megértsék, és mint egy igazi színes átlátszó kijelző a monitor? Ez azt jelenti, hogyan kell kiszámítani a kapott szín a pixel?

Hagyja, fehér alapon (háttér grafikai színösszeállítás „fehér alapon fekete”) szeretnénk felhívni a vásznon piros c alfa csatornán állítsa be a 128. argB méret, a szín lesz a rekord 0x80FF0000. Kiszámításához a kialakuló színt kell számítani a színe az egyes csatornák (vörös, zöld, kék).

A képlet a kapott szín alkalmazásának hatására a szín és az alfa, az egységre normalizáltuk:

  • Ennek eredményeként - a kapott értéket az intenzitása szín csatorna. Ha az érték nagyobb, mint 255, visszatér 255.
  • háttér - színes csatorna értéke a háttérben.
  • előtérben - a szín csatorna értéke a kiszabott képet.
  • alfa - alpha értéket normalizálni egységét.

Kiszámítjuk a kapott szín képlet szerint (1.3):

Alpha csatorna, normalizált „1”

A színanyagok dolgozza fel a terminál

Táblázat. 5. módszerei színfeldolgozásnak létrehozásakor a vászonra

COLOR_FORMAT_ARGB_NORMALIZE termel egy szép képet, figyelembe véve a megfelelő sablont RGB komponenseket. Kiszámítása végleges színét alkalmazásának hatására színét az alfa-csatorna szerint történik az (1.3).

COLOR_FORMAT_ARGB_RAW termel nincs ráhatása az RGB komponensek túlfolyó, és ezért COLOR_FORMAT_ARGB_RAW gyorsabb módszer, mint a COLOR_FORMAT_ARGB_NORMALIZE.

A képlet a kapott szín alkalmazásának hatására a szín és az alfa, az egységre normalizáltuk a COLOR_FORMAT_ARGB_RAW módszer:

  • Ennek eredményeként - a kapott értéket az intenzitása szín csatorna. Ha az érték nagyobb, mint 255, visszatér 255.
  • háttér - színes csatorna értéke a háttérben.
  • előtérben - a szín csatorna értéke a kiszabott képet.
  • alfa - alpha értéket normalizálni egységét.

5. Az illúzió átláthatóság

Most akkor folytassa a gyakorlati megvalósítása az átláthatóságot.

A diagramon felhívni néhány téglalapok egy kitöltés ( „xor.mq5” script). Annak illusztrálására, hogy különbséget színes grafikus feldolgozási technikák felett ró a vásznon három vízszintes átfedés nélkül.

Eredeti van COLOR_FORMAT_XRGB_NOALPHA feldolgozási módszer, a második - COLOR_FORMAT_ARGB_RAW és harmadik - COLOR_FORMAT_ARGB_NORMALIZE. Ezután fokozatosan változik az áttetszőséget 255 (teljesen átlátszatlan) és 0 (teljesen átlátszó). Nevezzük „Illusion.mq5” a script.


Ábra. 11. Munka illusion.mq5 script

5.1. Létrehozása script „Illusion.mq5”

Hozzáadása vagy módosítása a kód egy részét ki kell emelni.

Ez még mindig egy üres sablont script:

Adj hozzá leírást a forgatókönyvet, hogy a bemeneti paraméterek, amikor a szkript fut, és csatlakoztassa CCanvas class - osztály, amelynek köszönhetően állít:

Mert a szkript lesz szüksége néhány változót - magassága és szélessége a diagram, magassága és szélessége a vásznon, valamint segédváltozókat festeni a vászonra koordinátái:

A szélessége és magassága a legkeresettebb szabványos funkciókat.

Folytassuk közvetlenül OnStart ().

Az érthetőség kedvéért, ábrán. 12. ábra az elrendezés a vásznon a grafikonon, és a jelölést segédváltozók a vászon koordináta:

Learning osztály ccanvas

Ábra. 12. Koordináták egy grafikonon

Megkapjuk a magassága és szélessége a grafikonon, és kiszámolja a segédváltozók Canvas:

Miután számítani a szélessége és magassága a vászon, és a kiegészítő koordinátáit lehet kezdeni rajz.

Akkor változik, hogy milyen típusú void OnStart () függvény int, és levonja a földön a vászon kitöltött téglalapot, a szöveget a nevét a színes feldolgozási módszer a vásznon, és ez a teli körök:

Én meg fogja vitatni az utolsó beszúrt kód.

canvas_XRGB_NOALPHA.CreateBitmapLabel - Itt hoztunk létre egy grafikus erőforrás, amely kötődik a diagram objektumot.

Eredeti vászon jön létre a képfeldolgozó mód COLOR_FORMAT_XRGB_NOALPHA - alfa komponens, ha a rajz nem lesznek figyelembe véve.

Mi töltse ki a teljes vásznat argB színes formátumban c alfa átláthatóságot.

Mivel erre a vászonra megadott képfeldolgozó mód COLOR_FORMAT_XRGB_NOALPHA - színes vászon kizárja alpha.

Jeleníti meg a szöveget - képfeldolgozás ilyen a vásznon. A szöveg színe argB méret és alfa-csatornák 255, azaz a színe a megjelenített szöveg teljesen átlátszatlan.

Az üzenet szövege és csatolt vízszintesen (TA_CENTER) és vertikálisan (TA_VCENTER) központjában a befoglaló téglalapot.

Rajzolj egy szilárd kör. A kör akkor kerül sor, tetején a szín, amit kitöltve vászon (canvas_XRGB_NOALPHA.Erase (ColorToARGB (COLR, alfa))).

Ez annak bizonyítására, hogy az ábrán rajzolt a vásznon (vagy terület / pont) alatt teljesen törli a mögöttes mintát a vásznon. Vagyis nem átfestés vászon nem, mert Utolsó kimeneti minta törli teljesen alatti területet.

Ha azt akarjuk, rajzolt minden megjelenik a képernyőn, akkor kell frissíteni a képernyőt.

Hasonlóképpen, a másik kettő rajzolt a vászon: vászonra COLOR_FORMAT_ARGB_RAW második megjelenítési módot és a harmadik vászonra COLOR_FORMAT_ARGB_NORMALIZE megjelenítési mód:

Vászon és a grafikus belül festett vászon.

Most, hogy egy hurkot, amely megváltoztatja az átláthatóságot a vászon:

Megváltoztatása az átláthatóság minden vászon segítségével megtörténik a sorok az űrlapot:

Miután vége a rajz kell tisztítani - távolítsa el a grafikus erőforrásokat.

Mivel létrehoztunk egy grafikus erőforrás hivatkozva a téma a chart (CreateBitmapLabel módszer), majd törölje az erőforrás végezzük elpusztítani () metódus - és ezzel egyidejűleg el kell hagyni chart tárgy (Bitmap Label):

Script, simán változik átláthatóságát munkát.

Megjegyzem, hogy a különbség a megjelenítési módok és COLOR_FORMAT_ARGB_RAW COLOR_FORMAT_ARGB_NORMALIZE különösen szembetűnő, ha a szkript fut először a fehér háttér grafikai, majd a fekete háttér.

következtetés

Ez a cikk alapjairól dolgozik színes, megtanultuk, hogyan kell felhívni a diagram ablakban. Szintén alapjairól dolgozik az osztály CCanvas Standard Library, tanultunk a képmegjelenítést méret argB átláthatóságot.

Ez még csak a kezdet az úton, hogy egy igazán szép hatást grafikus objektumok a terminál MetaTrader 5 Ismét szeretnék összpontosítani átláthatóság: nevezetesen a részleges átlátszóságot adja a legszebb alakját határos grafika. Azáltal kétdimenziós monitor átláthatóságot a menetrend - ez egy illúzió, végezzük, hogy a pixelek vannak egymásra.

Kapcsolódó cikkek