Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Farbtabelle

  1. #1
    Registriert seit
    01.03.2008
    Beiträge
    487
    Danke
    3
    Erhielt 43 Danke für 39 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    gibt es irgendwo eine "Farbtabelle" die ungefähr so aussieht:

    Farbe.Rot:=255;
    Farbe.Gelb:=123;
    Farbe.Schwarz:=0;
    Farbe.Weis:=FFFFFF;

    usw...

    Die Werte sind natürlich mist.
    Das ganze als Struktur verpackt wäre toll.

    MfG CAS
    www.cas-solution.de

    Alles geregelt...


    Weltraumflug in den USA zu gewinnen!
    Kratze hier ▒▒▒▒▒▒▒▒▒▒▒▒ mit einer Münze,
    und finde heraus, ob Du der Gewinner bist!
    Zitieren Zitieren Farbtabelle  

  2. #2
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Vielleicht hilft Dir folgendes weiter:

    Code:
    TYPE VisuValueColor_Type :
    STRUCT
    (*NAME             TYPE        BBGGRR *)
        Black          :DWORD := 16#000000;
        Blue           :DWORD := 16#FF0000;
        BlueDark       :DWORD := 16#A00000;
        BlueLight      :DWORD := 16#FF8080;
        BlueSpecial    :DWORD := 16#FF0000;
        Cyan           :DWORD := 16#FFFF00;
        CyanDark       :DWORD := 16#A0A000;
        CyanLight      :DWORD := 16#FFFF80;
        CyanSpecial    :DWORD := 16#FFFF00;
        Green          :DWORD := 16#00FF00;
        GreenDark      :DWORD := 16#00A000;
        GreenLight     :DWORD := 16#80FF80;
        GreenSpecial   :DWORD := 16#00FF00;
        Grey           :DWORD := 16#C0C0C0;
        GreyDark       :DWORD := 16#5F5F5F;
        GreyLight      :DWORD := 16#C8D0D4;
        GreySpecial    :DWORD := 16#C0C0C0;
        Orange         :DWORD := 16#0099FF;
        OrangeDark     :DWORD := 16#1973DF;
        OrangeLight    :DWORD := 16#008DE2;
        OrangeSpecial  :DWORD := 16#0099FF;
        Pink           :DWORD := 16#FF00FF;
        PinkDark       :DWORD := 16#A000A0;
        PinkLight      :DWORD := 16#FF80FF;
        PinkSpecial    :DWORD := 16#FF00FF;
        Purple         :DWORD := 16#7F007F;
        PurpleDark     :DWORD := 16#2F002F;
        PurpleLight    :DWORD := 16#C900C9;
        PurpleSpecial  :DWORD := 16#7F007F;
        Red            :DWORD := 16#0000FF;
        RedDark        :DWORD := 16#0000AF;
        RedLight       :DWORD := 16#8080FF;
        RedSpecial     :DWORD := 16#0000FF;
        White          :DWORD := 16#FFFFFF;
        Yellow         :DWORD := 16#00FFFF;
        YellowDark     :DWORD := 16#00A0A0;
        YellowLight    :DWORD := 16#80FFFF;
        YellowSpecial  :DWORD := 16#00FFFF;
    END_STRUCT
    END_TYPE
    If you open your Mind too much, your Brain will fall out.

  3. #3
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Zitat Zitat von zotos Beitrag anzeigen
    Vielleicht hilft Dir folgendes weiter:
    ...
    grad erwähne ich Dich in einem Beitrag zu "kommt jetzt TIA", denke mir: na, von dem hast ja auch schon lang nicht mehr gelesen ...
    muss Gedankenübertragung sein!
    jedenfalls: herzlichen guten Abend ...

  4. #4
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Idee

    Das könnte das auch interessant sein, zum selber mischen...
    ftp://ftp2.3s-software.com/pub/Examples/Projects/CoDeSysV2.3/Visualisation/RGB/

    EDIT: Vorher ist bei 3S eine Anmeldung notwendig. Ist mir entgangen, weil der Firefox sich erinnerte...

    Gruß
    Chräshe
    Geändert von Chräshe (18.05.2011 um 17:56 Uhr) Grund: Anmeldung...

  5. #5
    Registriert seit
    03.03.2009
    Beiträge
    17
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von Chräshe Beitrag anzeigen
    Das könnte das auch interessant sein, zum selber mischen...
    ftp://ftp2.3s-software.com/pub/Examples/Projects/CoDeSysV2.3/Visualisation/RGB/

    Gruß
    Chräshe

    leider ist ein Passwort erforderlich !?
    Zitieren Zitieren Rgb  

  6. #6
    Registriert seit
    01.03.2008
    Beiträge
    487
    Danke
    3
    Erhielt 43 Danke für 39 Beiträge

    Standard

    perfekt.

    danke sehr.

    MfG CAS
    www.cas-solution.de

    Alles geregelt...


    Weltraumflug in den USA zu gewinnen!
    Kratze hier ▒▒▒▒▒▒▒▒▒▒▒▒ mit einer Münze,
    und finde heraus, ob Du der Gewinner bist!

  7. #7
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Blinzeln

    Zitat Zitat von PLEL Beitrag anzeigen
    leider ist ein Passwort erforderlich !?
    Ja, vorher hier anmelden... 3S
    Ist mir entgangen, weil der Firefox sich erinnerte...

  8. #8
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Habe da auch noch was, und zwar die Farben, die im Auswahlfenster der TargetVisu angeboten werden. Erste Ziffer=Spalte, zweite Ziffer=Zeile.
    Code:
    VAR_GLOBAL CONSTANT
    
        Colr00:DWORD:=16#8080FF;
        Colr01:DWORD:=16#0000FF;
        Colr02:DWORD:=16#404080;
        Colr03:DWORD:=16#000080;
        Colr04:DWORD:=16#000040;
        Colr05:DWORD:=16#000000;
    
        Colr10:DWORD:=16#80FFFF;
        Colr11:DWORD:=16#00FFFF;
        Colr12:DWORD:=16#4080FF;
        Colr13:DWORD:=16#0080FF;
        Colr14:DWORD:=16#004080;
        Colr15:DWORD:=16#008080;
    
        Colr20:DWORD:=16#80FF80;
        Colr21:DWORD:=16#00FF80;
        Colr22:DWORD:=16#00FF00;
        Colr23:DWORD:=16#008000;
        Colr24:DWORD:=16#004000;
        Colr25:DWORD:=16#408080;
    
        Colr30:DWORD:=16#80FF00;
        Colr31:DWORD:=16#40FF00;
        Colr32:DWORD:=16#808000;
        Colr33:DWORD:=16#408000;
        Colr34:DWORD:=16#404000;
        Colr35:DWORD:=16#808080;
    
        Colr40:DWORD:=16#FFFF80;
        Colr41:DWORD:=16#FFFF00;
        Colr42:DWORD:=16#804000;
        Colr43:DWORD:=16#FF0000;
        Colr44:DWORD:=16#800000;
        Colr45:DWORD:=16#808040;
    
        Colr50:DWORD:=16#FF8000;
        Colr51:DWORD:=16#C08000;
        Colr52:DWORD:=16#FF8080;
        Colr53:DWORD:=16#A00000;
        Colr54:DWORD:=16#400000;
        Colr55:DWORD:=16#C0C0C0;
    
        Colr60:DWORD:=16#C080FF;
        Colr61:DWORD:=16#C08080;
        Colr62:DWORD:=16#400080;
        Colr63:DWORD:=16#800080;
        Colr64:DWORD:=16#400040;
        Colr65:DWORD:=16#400040;
    
        Colr70:DWORD:=16#FF80FF;
        Colr71:DWORD:=16#FF00FF;
        Colr72:DWORD:=16#8000FF;
        Colr73:DWORD:=16#FF0080;
        Colr74:DWORD:=16#800040;
        Colr75:DWORD:=16#FFFFFF;
    
    END_VAR

  9. #9
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe auch noch was. Bei Bestimmten Objekten wollte ich z.B. den Rahmen ein wenig heller oder dunkler als die Fläche darstellen. Jetzt wollte ich nicht für jedes Objekt zwei Farben angeben (also z.B. Gelb und hell Gelb). Um nun aber die Helligkeit einer Farbe zu beeinflussen, ist das RGB Farbschema nicht besonders geeignet. Also Umrechnen von RGB in HSL Helligkeit anpassen und von HSL wieder in RGB zurück rechnen. RGB ist bei CoDeSys übrigens BGR (Blau, Grün, Rot)

    Hier mein Vorgehen:

    Datentyp:
    Code:
    TYPE Type_HSL :
    STRUCT
        Hue         :REAL;
        Saturation  :REAL;
        Lightness   :REAL;
    END_STRUCT
    END_TYPE
    Umrechnung BGR nach HSL:
    Code:
    FUNCTION BGR2HSL : Type_HSL
    VAR_INPUT
        BGR_Color   :DWORD;
    END_VAR
    VAR
        Red         :REAL;
        Green       :REAL;
        Blue        :REAL;
        Minimum     :REAL;
        Maximum     :REAL;
        Delta       :REAL;
        Hue         :REAL;
        Saturation  :REAL;
        Lightness   :REAL;
    END_VAR
    
    Red   := DWORD_TO_REAL(SHR(SHL(BGR_Color,24),24)) / 255.0;
    Green := DWORD_TO_REAL(SHR(SHL(BGR_Color,16),24)) / 255.0;
    Blue  := DWORD_TO_REAL(SHR(    BGR_Color,    16)) / 255.0;
    
    Minimum := Red;
    IF (Green < Minimum)
    THEN
        Minimum := Green;
    END_IF
    
    IF (Blue < Minimum)
    THEN
        Minimum := Blue;
    END_IF
    
    
    Maximum := Red;
    IF (Green > Maximum)
    THEN
        Maximum := Green;
    END_IF
    
    IF (Blue > Maximum)
    THEN
        Maximum := Blue;
    END_IF
    
    Delta := Maximum - Minimum;
    
    
    
    (*Saturation := Delta / Maximum;*)
    IF (Minimum = Maximum)
    THEN
        Hue := 0.0;
    ELSE
        IF (Red = Maximum)
      THEN
            Hue := INT_TO_REAL(REAL_TO_INT((60*((Green - Blue) / Delta)) + 0.0) MOD 360);
        ELSIF (Green = Maximum)
        THEN
            Hue := ((60*((Blue - Red  ) / Delta)) + 120.0);
        ELSE
            Hue := ((60*((Red - Green ) / Delta)) + 240.0);
        END_IF
    END_IF
    
    IF (HUE < 0)
    THEN
        HUE := HUE + 360.0;
    END_IF
    
    Lightness := (Maximum+Minimum) * 0.5;
    
    
    IF (Maximum = Minimum)
    THEN
        Saturation := 0;
    ELSIF (Lightness <= 0.5)
    THEN
      Saturation := (Delta/(Maximum+Minimum));
    ELSE
      Saturation := (Delta/(2-Maximum-Minimum));
    END_IF
    
    BGR2HSL.Hue        := Hue;
    BGR2HSL.Saturation := Saturation;
    BGR2HSL.Lightness  := Lightness;
    
    END_FUNCTION
    Zurück von HSL nach BGR:
    Code:
    FUNCTION HSL2BGR : DWORD
    VAR_INPUT
        HSL         :Type_HSL;
    END_VAR
    VAR
        Red         :REAL;
        Green       :REAL;
        Blue        :REAL;
        Minimum     :REAL;
        Maximum     :REAL;
        Delta       :REAL;
    END_VAR
    
    IF HSL.Saturation = 0
    THEN
    HSL2BGR :=     SHL(REAL_TO_DWORD(255 * HSL.Lightness), 16) OR
                         SHL(REAL_TO_DWORD(255 * HSL.Lightness),  8) OR
                         REAL_TO_DWORD(255 * HSL.Lightness);
    ELSE
    
        IF HSL.Lightness <= 0.5
        THEN
        Minimum := HSL.Lightness * (1 - HSL.Saturation);
      ELSE
        Minimum := HSL.Lightness - HSL.Saturation * (1 - HSL.Lightness);
      END_IF
    
      Maximum := 2 * HSL.Lightness - Minimum;
      Delta   := Maximum - Minimum;
    
      CASE (REAL_TO_INT(HSL.Hue) / 60) OF
          0: ;
            Red   := Maximum;
          Blue  := Minimum;
          Green := (HSL.Hue / 60) * Delta + Minimum;
    
        1: ;
            Green := Maximum;
          Blue  := Minimum;
          Red   := Minimum - ((HSL.Hue / 60) - 2) * Delta;
    
        2: ;
            Green := Maximum;
          Red   := Minimum;
          Blue  := ((HSL.Hue / 60) - 2) * Delta + Minimum;
    
        3: ;
            Blue  := Maximum;
          Red   := Minimum;
          Green := Minimum - ((HSL.Hue / 60) - 4) * Delta;
    
        4: ;
            Blue  := Maximum;
          Green := Minimum;
          Red   := ((HSL.Hue / 60) - 4) * Delta + Minimum;
    
    
        ELSE
            Red   := Maximum;
          Green := Minimum;
          Blue  := Minimum - ((HSL.Hue / 60) - 6) * Delta;
        END_CASE
    HSL2BGR :=     SHL(REAL_TO_DWORD(255 * Blue         ), 16) OR
                            SHL(REAL_TO_DWORD(255 * Green        ),  8) OR
                                REAL_TO_DWORD(255 * RED          );
    END_IF
    
    END_FUNCTION
    Nun noch ein kleines Testprogramm ;o) Das aus Gelb ein hell Gelb zaubert:
    Code:
    PROGRAM PLC_PRG
    VAR
        Farbe : DWORD := 16#00FFFF;
        ResFarbe : DWORD; (*Resultierende Farbe*)
        HSL_Farbe : Type_HSL;
        Offset : REAL := 0.15;
    END_VAR
    
    
    HSL_Farbe := BGR2HSL(Farbe);
    HSL_Farbe.Lightness := HSL_Farbe.Lightness + Offset;
    
    ResFarbe := HSL2BGR(HSL_Farbe);
    PS: Ja, der Aufwand steht in keinem Verhältnis zum Effekt. Aber voller Spieltrieb voraus.

    PPS: @Perfektionist: Auch Dir einen schönen guten Abend.
    If you open your Mind too much, your Brain will fall out.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •