Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Poradil by mi prosím někdo, jak v allegru získat jednotlivé barevné složky bodu? Já znám jen funkci getpixel.

Odpovědět 17.10.2012 19:08
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda (Luckin):

Převést do binární soustavy, dostaneš tříbytový číslo - 1. byte je červená, 2. byte zelená, 3. byte modrá. Jednotlivý byty převedeš zpátky do desítkový soustavy a máš rgb hodnoty. Doporučuju napsat si na to funkci, asi tak aby vracela pointer na tříprvkový pole, a v každym prvku bude jedna složka ...nebo udělat to pole globální a napsat proceduru která ty hodnoty uloží do něj abys nemusel to pole dělat dynamicky :)

 
Nahoru Odpovědět 17.10.2012 19:35
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 17.10.2012 19:36
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 8.11.2012 9:48
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda (Luckin):

Nevim jestli C/C++ má na to něco ve standardních knihovnách, můžeš zkusit vygooglit. Já si na tohle píšu funkce sám podle potřeby. Pokud nevíš jak se převádí mezi soustavama tak se to nauč, pak napsat takovou funkci by neměl bejt zásadní problém. Popřípadě někde na netu najdi tu funkci napsanou od někoho jinýho.

 
Nahoru Odpovědět 8.11.2012 11:37
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda (Luckin):

Napad mě ještě jeden, asi daleko jednodušší způsob.

(getpixel(bit­map,x,y) & 0xFF0000) >> 16 - červená
(getpixel(bit­map,x,y) & 0x00FF00) >> 8 - zelená
(getpixel(bit­map,x,y) & 0x0000FF) - modrá

 
Nahoru Odpovědět 11.11.2012 12:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na Lukáš Hruda (Luckin)
Kit:

Hlavně nevolat funkci getpixel() 3× za sebou kvůli jednomu bodu.

Možná by bylo vhodnější použít nějakou strukturu a přímo adresovat konkrétní byte.

Nahoru Odpovědět 11.11.2012 12:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Lukáš Hruda (Luckin):

To byl jenom přiklad jak z tý hodnoty dostat barvu. Pro praktycký účely bych asi udělal proměnnou, do ní uložil tu barvu (int color = getpixel(...)) a dál pracoval s ní. Nebo jak říkáš přes nějakej pointer adresovat konkrérní byte, ale pokud nutně nepotřebuješ aby to bylo maximálně rychlý, tak je to imho zbytečný přidělávání práce.

 
Nahoru Odpovědět 11.11.2012 14:47
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Lukáš Hruda (Luckin)
Zdeněk Pavlátka:

Co znamená to
>> 16 - červená
?

Editováno 11.11.2012 18:35
Nahoru Odpovědět 11.11.2012 18:35
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Kit:

To znamená, že se to musí posunout o 16 bitů doprava.

Nahoru Odpovědět 11.11.2012 18:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 11.11.2012 18:37
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Kit
Redaktor
Avatar
Nahoru Odpovědět 11.11.2012 18:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.