Błędy odczyt kolorów

0

Witam

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

#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 ?

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...

0

Spróbuj tego sposobu:

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1