Skocz do zawartości
aurel

C++ I Kolorki...

Rekomendowane odpowiedzi

Program ma działać tak jak paint mniej wiecej - kursorem po ekranie ma rysować, na różne kolorki.

 

Jedną z funkcji, która jest wykorzystywana, jest:

 

{	Image1->Canvas->Pixels[X][Y]=clBlack;}

No i ja to bym chciała, żeby zamiast tego clBlack mogła być zmienna kolor, wtedy bardzo ułatwione byłoby zmienianie kolorów i wogle fajnie.

Tyle że - jaki typ zmiennej zadeklarować? oO

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

f1 mówi o jakimś typie enum, a gdy tak zrobie to sie okazuje ze

 

'kolor must be a previously defined enumeration tag'

 

:/

 

no po prostu nie umiem, a pomoc jest po angielsku, co utrudnia zrozumienie.

Edytowane przez aurel

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no faktycznie jest typ enum... tylko nei jakiś...

 

warość clBlack, czy clWhite aby była rozumiana przez kompplilator musi coś znaczyć... tu znaczy po prostu liczbę z typu enum TColor, którą de facto jest int...

 

Jeśli chce się programować cokolwiek to znajomość angielskiego jest obligatoryjna - bez tego ani rusz...

 

Najważniejszy fragment jest tutaj...

If you specify TColor as a specific 4-byte hexadecimal number instead of using the constants defined in the Graphics unit, the low three bytes represent RGB color intensities for blue, green, and red, respectively. The value 0x00FF0000 represents full-intensity, pure blue, 0x0000FF00 is pure green, and 0x000000FF is pure red. 0x00000000 is black and 0x00FFFFFF is white.

W praktyce jest to zwykły format rgb (red green blue) w którym każde 2 bajty w kodzie szesnastkowym odpowiadając kolejno składnik czerwony, składnik zielony, składnik niebieski..

zatem kolor czerwony to 0x00FF0000.. czyli wartość 255dec wpisana w miejsce składowej czerwonej...

 

jeśli uzyjesz typu enum TColor , który definiuje skaldniki np clBlack, clRed to tak naprawdę wartość clRed = 0x00FF0000 intowo...

Typ ten robi trochę więcej, prócz podstawowych kolorów przechowuje także wartości np : clBtnFace - która oznacza windowsowy kolor przycisków np...

 

do tworzenia kolorów własnych możesz stosowac np makro RGB() jak napisał Zawadaki, które zdefiniowane jest tak i po prostu z podanych przez ciebie liczb określających składowe tworzy kolor przesuwając wartości na odpowiednie bity w liczbie int określającej kolor.

 

#define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | \  	((WORD) (g) << 8)) | \ 	(((DWORD) (BYTE) (b)) << 16)))

czyli Image1->Canvas->Pixels[X][Y]= RGB(10,10,10);

 

tu zapewne wystąpi konflikt typów, trzeba by poszukać czegoś co zwraca typ TColor lub po prostu zrobić rzutowanie...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

enum kolor;kolor=00X00FFFFFF;void __fastcall TForm1::Image1MouseDown(TObject *Sender,	  TMouseButton Button, TShiftState Shift, int X, int Y){ Image1->Canvas->Pixels[X][Y]=kolor;}

błąd:

'kolor must be a previously defined enumeration tag'

 

edit: napisane przez aurel, zapomniałam sie przelogowac.

Edytowane przez igomako

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...