Jak pobrać z komponentu kolor w wartości R,G,B?

0

Witam. Chciałbym z komponentu np. z colordialog pobrać kolor ale musi mieć wartość przedstawioną w RGB, niewiem czy to jakoś ogranicza ale mam BC++B 6 Personal.

0

o to chodzi?

    *b = (unsigned int)LOBYTE(HIWORD( kolor ));
    *g = (unsigned int)HIBYTE(LOWORD( kolor ));
    *r = (unsigned int)LOBYTE(LOWORD( kolor ));
0

Chdzi o to by np. kolor z ColorDialog przedstawić w RGB czyli np. czarny kolor będzie miał parametry:
R=255
G=255
B=255
Pozdrawiam.

0

W takim razie:

*b = 255-(unsigned int)LOBYTE(HIWORD( kolor ));
*g = 255-(unsigned int)HIBYTE(LOWORD( kolor ));
*r = 255-(unsigned int)LOBYTE(LOWORD( kolor ));

[diabel]

0

Gdzie mam wpisać tą linijkę:
*b = 255-(unsigned int)LOBYTE(HIWORD( kolor ));
A czy w miejsce wyrazu kolor mam napisać np. ColorDialog1->Color?

0

Nie zajmuj sie builderem zanim nie poznasz podstaw języka.

0

A co muszę wiedzieć w tym momencie?

0

Bo zdeklarowałem b, wpisuję tą linijkę ale jak wyświetlam b to zawsze jest 255.

0

Niby wszystko jest OK ale podaje mi nieprawidłowe wartości tych kolorów. Np. kolor buttonFace podaje mi r=240 g=255 b=255 a jak wpisuje to w paint to wychodzą inne kolory.

0
DWORD kolor = GetSysColor ( COLOR_BTNFACE ) ;
RGBTRIPLE * rgb = ( RGBTRIPLE * ) &kolor ;

rgb->rgbtBlue ; // natezenie niebieskiego
rgb->rgbtGreen ; // natezenie zielonego
rgb->rgbtRed ; // natezenie czerwonego
0

Napisz mi jak w ten sposób pobrać RGB z ColorDialog1->Color.

0

nie za bardzo wiem jakiego typu jest parametr ColorDialog1->Color (tak w ogole to piszez w BC tak ?) ale raczej na pewno ColorDialog1->Color jest liczba 32 bitowa wiec tam gdzie ja napisalem "kolor" tam ty piszesz "ColorDialog1->Color"

0

Do pobrania RGB służą makra GetRValue, GetGValue, GetBValue argumentem jest ColorDialog1->Color.

0

a czy jest możliwe żeby zamienić wartość koloru na RGBTRIPLE i mieć każdy kolor osobno ??
czyli np kolor który ma wartość 15 zamienić tak żeby można było mieć jego składowe ??
bardzo by mi takie coś ułatwiło życie :) bo właśnie nad tym się męczę i nie wiem jak to zrobić prosiłbym o jakieś rady i porady :)

0
MlodyBeny napisał(a)

a czy jest możliwe żeby zamienić wartość koloru na RGBTRIPLE i mieć każdy kolor osobno ??

To żart???

PSDK napisał(a)
typedef struct tagRGBTRIPLE 
{ 
  BYTE rgbtBlue; 
  BYTE rgbtGreen; 
  BYTE rgbtRed; 
} RGBTRIPLE; 
0
0x666 napisał(a)

To żart???

nie to nie żart tylko chyba źle to napisałem :-P
chodzi o to że pobieram sobie wartość koloru piksela tylko że mam to jako COLORREF a chciałbym zamienić to na RGBTRIPLE tak żebym mógł sobie każdą składową koloru dowolnie zmieniać :)
bo jak robie:

RGB(pixel.rgbtRed, pixel.rgbtGreen, pixel.rgbtBlue)= pdc->GetPixel(10,10);

to wywala mi błąd :
: error C2106: '=' : left operand must be l-value
i nie wiem czy da się to jakoś przeskoczyć bo ja nie wiem jak sobie z tym poradzić [glowa]

0
MlodyBeny napisał(a)

bo jak robie:

RGB(pixel.rgbtRed, pixel.rgbtGreen, pixel.rgbtBlue)= pdc->GetPixel(10,10);

To nie jest składnia c++. Jak już to:

RGBTRIPLE rgb;
COLORREF cr;

cr=pdc->GetPixel(10,10);

rgb.rgbtBlue=cr>>16; 
rgb.rgbtGreen=(cr&0xFF00)>>8; 
rgb.rgbtRed=cr&0xFF;
0

super wielkie dzięki o to właśnie mi chodziło :) :) :)

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