RGB array



  • ich möchte gerne ein array haben,
    in dem ich rgb werte also z.b.

    RGB(0,170,0)
    

    speichern kann

    habs auch schon als vector probiert.
    bekomms aber irgendwie nicht hin 😞



  • RGB ist nur ein macro.
    Dir wird nichts anders übrig bleiben als in deinem array unsigned long zu speichern. z.b.

    unsigned long colors[20];
    colors[0]=RGB(0,170,0);
    colors[1]=RGB(170,0,170);
    

    Kurt

    Ich glaube es gibt da eine typedef COLORREF für unsigned long.



  • class CRGB
    {
    public:
    CRGB(int Rot, int Gruen, int Blau);
    ~CRGB();
    int m_Rot;
    int m_Gruen;
    int m_Blau;
    };
    
    CRGB::CRGB(int Rot, int Gruen, int Blau)
    {
    m_Rot = Rot;
    m_Gruen = Gruen;
    m_Blau = Blau;
    }
    
    CRGB::~CRGB()
    {
    }
    
    std::vector<CRGB> vRGB;
    
    #define RGB(a, b, c) vRGB.push_back(CRGB(a, b, c))
    

    Sollte Funktionieren..

    EDIT:
    Tippfehler ausgemertzt...



  • @ Darklord: Die Idee mit der CRGB-Klasse finde ich nicht schlecht.
    Damit man mit der Klasse aber vernünftig arbeiten kann würde ich noch eine Konvertierung nach COLORREF einbauen. Ungefähr so.

    operator COLORREF () { return RGB( m_Rot, m_Gruen, m_Blau ); }
    

    Dann könnte man deine Klasse auch überall dort einsetzen wo eine COLORREF benötigt wird.
    zB

    CRGB blueColor(0, 12, 255);
    	CPen PenBlue;
    
    	// Blue solid pen width = 1
    	PenBlue.CreatePen(PS_SOLID, 1, blueColor);
    

    Kurt

    PS: deinen macro RGB finde ich unnütig ( soll aber wahrscheinlich auch nur ein Anwendungsbeispiel sein 🙂 ).



  • hat geholfen

    thx!


Anmelden zum Antworten