Avatar billede nubi19 Nybegynder
26. juli 2002 - 19:32 Der er 9 kommentarer og
1 løsning

Label->Color -> RGB, hvordan ?

Hvis jeg har farven på en Label (Color), og vil have den ud som tal i RGB format, altså sådan at jeg får 3 tal, 1 for rød, 1 for grøn og 1 for blå, hvordan gør jeg så det ?

PS. Har ikke flere point end 20 :(
Avatar billede kamikaze Nybegynder
27. juli 2002 - 12:56 #1
Hvilket IDE?

Hvis det er C++ Builder mener jeg der er en Color attribut:

TLabel* Label;
Label->Color = RGB(255, 255, 255); //Hvid
//
Label->Color = RGB(255, 255, 255); //Rød
Avatar billede nubi19 Nybegynder
27. juli 2002 - 13:17 #2
Ehm altså jeg bruger Builder, og jeg har f.eks. en Label->Color = "noget", det "noget" vil jeg så have omdannet til RGB.
Avatar billede kamikaze Nybegynder
27. juli 2002 - 14:51 #3
Så er jeg ikke helt med. Kan du ikke gøre som ovenstående RGB(255, 0, 0); ???

Ellers kan du bruge Label->Color = 0x000000ff; // rød
                    Label->Color = 0x0000ff00; // grøn
                    Label->Color = 0x00ff0000; // blå
Avatar billede kamikaze Nybegynder
27. juli 2002 - 14:52 #4
Ahh, nu er jeg med. Sorry. Du har en værdi, og vil gerne vide hvor meget der er hhv. rød, grøn og blå, ikk?
Avatar billede kamikaze Nybegynder
27. juli 2002 - 15:05 #5
Hvis det er det du mener, kan du fx. gøre sådan her:

#include <iostream.h>
#include <conio.h>
#include <windows.h>

#define GetR(rgb)      ((BYTE)(rgb))
#define GetG(rgb)      ((BYTE)(((WORD)(rgb)) >> 8))
#define GetB(rgb)      ((BYTE)((rgb)>>16))

int main()
{
    COLORREF clr;
    clr = 0x00030201;
    int r=0, g=0, b=0;

    r=GetR(clr);
    g=GetG(clr);
    b=GetB(clr);

    cout << "R:" << r << endl;
    cout << "G:" << g << endl;
    cout << "B:" << b << endl;

    getch();
    return 0;
}
Avatar billede kamikaze Nybegynder
27. juli 2002 - 15:07 #6
Husk at typecaste hvis du bruger macroerne direkte, altså:
#include <iostream.h>
#include <conio.h>
#include <windows.h>

#define GetR(rgb)      ((BYTE)(rgb))
#define GetG(rgb)      ((BYTE)(((WORD)(rgb)) >> 8))
#define GetB(rgb)      ((BYTE)((rgb)>>16))

int main()
{
    COLORREF clr;
    clr = 0x00030201;

    cout << "R:" << (int) GetR(clr) << endl;
    cout << "G:" << (int) GetG(clr) << endl;
    cout << "B:" << (int) GetB(clr) << endl;

    getch();
    return 0;
}
Avatar billede kamikaze Nybegynder
31. juli 2002 - 16:08 #7
Har du fået det til at virke?!?
Avatar billede nubi19 Nybegynder
31. juli 2002 - 17:19 #8
Jeg har faktisk ikke forsøgt, idet jeg har fundet en anden løsning. Havde fuldstændig glemt det her, sry.
Avatar billede soepro Nybegynder
02. august 2002 - 13:59 #9
Hvilken løsning var det så ?
Avatar billede nubi19 Nybegynder
02. august 2002 - 18:18 #10
Hehe jeg fandt bare RGB koden for den farve der skulle være default, og så lavede jeg noget smart noget med at gemme det i en fil, og hele tiden holde styr på værdierne via variabler. (Det med fil & variabler skulle bruges alligevel, så det var bare 2 linier extra kode ca.)
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