RGB um bestimmte farbe erhöhen !!



  • hi leute,

    kennt einer ein bestimmtes verfahren um einen bestimmten wert (in RGB) um eine bestimmte farbe zu ERHÖHEN ??

    das versteht keiner, deshalb hier ein beispiel:
    in einem dialogfeld ist ein bild in graustufen abgebildet. die einzelnen pixel werden ausgelesen und man erhält einen bestimmten wert vom typ COLORREF.
    jetzt hab ich diese (graue) farbe und möchte das bild einfach nur färben; nicht auf einen vorher bestimmten farbwert ändern. d.h. z.b. einen rot-ton über das bild legen.

    ➡ das kann man damit vergleichen:
    wenn man auf einen tageslichtprojektor ein bild auf einer folie hat und man über diese folie eine andere folie legt, die einfach nur rot ist. dann ist das bild nicht ganz rot, sondern nur gefärbt, weil die farben der beiden folien gemischt wurden.

    jetzt versteht ihr (hoffentlich) was ich meine 🕶 ächts

    bin immer dankbar für jeden hilfeversuch ...



  • Du kannst den Wert ganz einfach über GetRValue, GetGValue und GetBValue zerlegen, dann die werte ändern und per RGB-makro wieder zusammenstellen.



  • ja, hmm. danke trotzdem, aber ...
    meine frage war vielleicht doch nicht so klar 😉

    aber welche werte muß ich dann ins RGB-makro schreiben damit der grau-ton (z.b.) zum rot-ton gemacht wird !?
    wie ich das einstellen kann weiß ich schon, muss nur noch wissen wie verfahren muß damit ich den farb-ton angeben kann.



  • COLORREF BkColor;
    // fill it
    
    BYTE cRotAnteil = GetRValue(BkColor);
    BYTE cBlauAnteil = GetBValue(BkColor);
    BYTE cGrünAnteil = GetGValue(BkColor);
    
    // nun bastle dran rum, 
    // z.B. erhöhe den rot anteil
    if(cRotAnteil+50 <= 255)
       cRotAnteil += 50;
    else 
       cRotAnteil = 255;
    
    // verpacke das ganze wieder
    BkColor = RGB(cRotAnteil,cBlauAnteil,cGrünAnteil);
    


  • habs jetzt so ähnlich gemacht.
    danke dir


Anmelden zum Antworten