aurel Opublikowano 17 Listopada 2006 Zgłoś Opublikowano 17 Listopada 2006 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
SGJ Opublikowano 17 Listopada 2006 Zgłoś Opublikowano 17 Listopada 2006 TColor Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
bellum Opublikowano 17 Listopada 2006 Zgłoś Opublikowano 17 Listopada 2006 (edytowane) rgb(r, g, b) Edytowane 17 Listopada 2006 przez Zawadaki Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 17 Listopada 2006 Zgłoś Opublikowano 17 Listopada 2006 najedź kursorem na clBlack i wciśnij F1... :rtfm: ... odpowiedź przyjdzie sama :wink: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
aurel Opublikowano 18 Listopada 2006 Zgłoś Opublikowano 18 Listopada 2006 (edytowane) 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 18 Listopada 2006 przez aurel Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 18 Listopada 2006 Zgłoś Opublikowano 18 Listopada 2006 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... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
grzmot Opublikowano 19 Listopada 2006 Zgłoś Opublikowano 19 Listopada 2006 (edytowane) Jeden drobiazg. Jeśli chodzi o środowisko Borlanda, to notacja jest odwrotna, to znaczy 00x00BBGGRR, a nie 00x00RRGGBB. Edytowane 19 Listopada 2006 przez grzmot Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
igomako Opublikowano 19 Listopada 2006 Zgłoś Opublikowano 19 Listopada 2006 (edytowane) 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 19 Listopada 2006 przez igomako Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
grzmot Opublikowano 20 Listopada 2006 Zgłoś Opublikowano 20 Listopada 2006 Ma być zadeklarowane w typie TColor Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...