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.
o to chodzi?
*b = (unsigned int)LOBYTE(HIWORD( kolor ));
*g = (unsigned int)HIBYTE(LOWORD( kolor ));
*r = (unsigned int)LOBYTE(LOWORD( kolor ));
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.
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]
Gdzie mam wpisać tą linijkę:
*b = 255-(unsigned int)LOBYTE(HIWORD( kolor ));
A czy w miejsce wyrazu kolor mam napisać np. ColorDialog1->Color?
Nie zajmuj sie builderem zanim nie poznasz podstaw języka.
A co muszę wiedzieć w tym momencie?
Bo zdeklarowałem b, wpisuję tą linijkę ale jak wyświetlam b to zawsze jest 255.
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.
DWORD kolor = GetSysColor ( COLOR_BTNFACE ) ;
RGBTRIPLE * rgb = ( RGBTRIPLE * ) &kolor ;
rgb->rgbtBlue ; // natezenie niebieskiego
rgb->rgbtGreen ; // natezenie zielonego
rgb->rgbtRed ; // natezenie czerwonego
Napisz mi jak w ten sposób pobrać RGB z ColorDialog1->Color.
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"
Do pobrania RGB służą makra GetRValue, GetGValue, GetBValue argumentem jest ColorDialog1->Color.
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 :)
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;
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]
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;
super wielkie dzięki o to właśnie mi chodziło :) :) :)