Błędy odczyt kolorów

Błędy odczyt kolorów
AD
  • Rejestracja:około 18 lat
  • Ostatnio:5 miesięcy
  • Postów:206
0

Witam

Czy ktoś jest w stanie powiedzieć dlaczego ten program:

Kopiuj
#include <allegro.h>
#include <winalleg.h>
#include <iostream>
#include <windows.h>

using namespace std;


inline void init()
{
	allegro_init();
	set_color_depth(32);
	set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);

	install_timer();
	install_keyboard();
	install_mouse();
}

inline void deinit()
{
	clear_keybuf();
	allegro_exit();
}

int main()
{
init();
short int R,G,B;
COLORREF Kolor;

Kolor = (200,55,33);


R=GetRValue(Kolor);
G=GetGValue(Kolor);
B=GetBValue(Kolor);

textprintf( screen, font, 20, 20, makecol( 255, 255, 128 ), "R : %u", R);
textprintf( screen, font, 20, 30, makecol( 255, 255, 128 ), "G : %u", G );
textprintf( screen, font, 20, 40, makecol( 255, 255, 128 ), "B : %u", B );

readkey();

	deinit();
	return 0;
}
END_OF_MAIN()

w wyniku daje wartości kolorów:
R 33, G 0, B 0 ?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

Kolor = (200,55,33); - operator , nie działa w C++ tak jak Ci się wydaje, poczytaj sobie o tym (comma operator c++).


0
Patryk27 napisał(a):

Kolor = (200,55,33); - operator , nie działa w C++ tak jak Ci się wydaje, poczytaj sobie o tym (comma operator c++).

No, tak.

operacja w stylu: Kolor = (200,55,33);

jest traktowana zwyczajnie, tz. tak: Kolor = 200,55,33;
co jest równoważne z: Kolor = 33;
bowiem operator przecinkowy daje wynik równy ostatniemu wyrażeniu, które w tym przypadku to po prostu 33.

W tym przypadku należy użyć takiego wyrażenia:
Kolor = TColor(200,55,33);
ewentualnie wprost:
Kolor = #bbggrr; gdzie: bb = ...

0

Kolor = #bbggrr; gdzie: bb = ...

0xbb...

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Spróbuj tego sposobu:

Kopiuj
COLORREF redColor=RGB(255,0,0);

Znalezione tutaj: http://www.programming-techniques.com/2012/01/drawing-straight-line-using-dda.html

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.