Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Zdeněk Pavlátka:17.10.2012 19:08

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
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda:17.10.2012 19:35

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
Nahoru Odpovědět
17.10.2012 19:36
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Lukáš Hruda
Zdeněk Pavlátka:8.11.2012 9:48

Co mám použít na převody?

Nahoru Odpovědět
8.11.2012 9:48
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda:8.11.2012 11:37

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
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda:11.11.2012 12:00

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
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:11.11.2012 12:30

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
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:11.11.2012 14:47

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
Odpovídá na Lukáš Hruda
Zdeněk Pavlátka:11.11.2012 18:35

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
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Kit:11.11.2012 18:36

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
Odpovídá na Kit
Zdeněk Pavlátka:11.11.2012 18:37

A to udělám jak?

Nahoru Odpovědět
11.11.2012 18:37
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Kit:11.11.2012 18:38

Operátorem >>.

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.