Avatar billede tokelil Nybegynder
08. februar 2001 - 19:04 Der er 3 kommentarer og
1 løsning

TColorDialog og deling af RGB

Fra en ColorDialog henter jeg en farve. Nu vil jeg gerne have de 3 RGB tal, skrevet ud  i hver sin label.
Hvordan kan jeg gøre det?? Med ColorToRGB får jeg en masse tal smnidt ud i en lang string, og jeg aner ikke hvordan jeg skal skille de 3 farver ad... Help! :-)
Avatar billede wisen Nybegynder
09. februar 2001 - 08:07 #1
Er det C-builder vi snakker om, eller hvad ? Hvis vi nu antager at du får en \"COLORREF\" tilbage (Windows API ting), kan du bruge funktionerne \"GetRValue\", \"GetGValue\" og \"GetBValue\"; disse afleverer en byte, som er værdien af de respektive farver...

COLORREF
The COLORREF value is used to specify an RGB color.

typedef DWORD COLORREF;
typedef DWORD *LPCOLORREF;

GetRValue
The GetRValue macro retrieves an intensity value for the red component of a red, green, blue (RGB) value.

BYTE GetRValue( DWORD rgb  // RGB value );

(Det er altsammen Windows API, så det skulle principielt virke, uanset udviklingsmiljø...)
Avatar billede tokelil Nybegynder
09. februar 2001 - 13:28 #2
Thx... Det var lige det jeg skulle bruge!! Perfekt! :-)
Avatar billede wisen Nybegynder
09. februar 2001 - 13:42 #3
Det var så lidt :)
Avatar billede soepro Nybegynder
09. februar 2001 - 13:59 #4
Jeg vil foreslå:

int color = (int)ColorDialog1->Color;

int Rvalue = (color & 0xFF0000) >> 16;
int Gvalue = (color & 0xFF00) >> 8;
int Bvalue = (color & 0xFF);

Hvis du har ændret på din palette, kan du ikke bruge d.o. - så er det tal du får tilbage, et index til pallet\'en, og så skal du ned i selve paletten, for at finde RGB værdierne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester