vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Subtraktive Farbmischung 
Autor: Dilbert
Datum: 22.08.16 22:05

Hi,

ich suche eine Funktion, die zwei Farben nach dem Schema der SUBTRAKTIVEN Farbmischung mischen kann.
Leider sind alle Funktionen vom Framework ausschließlich für die additive Farbmischung ausgelegt. Zum Beispiel die Funktion „LinearGradientBrush“.
Genau so einen Farbverlauf muss ich aber mit einer subtraktiven Farbmischung realisieren.
(Es geht um echte Druckfarben, die anteilig gemischt werden müssen. Zum Auswählen möchte ich einen Farbverlauf produzieren)

Ich hoffe, hier kennt sich jemand mit den Farbsystemen aus? Leider ist 90% des Internets voller falscher Informationen zu diesem Thema.
Zur Erklärung:
RGB Farben sind die Grundfarben der additiven Farbmischung (Selbstleuchtende Farben).
CMY für subtraktive Mischung (z.B. Druckfarben).
In der Theorie ist Schwarz nicht nötig, da je 100% C, M und Y Schwarz ergeben. In der Praxis wird für besonders dunkle Farben Schwarz zugemischt.

100% Cyan und 100% Yellow sollten gemischt und in RGB umgerechnet dann 100% Grün geben.

Genau da beginnt mein Problem:
Ich bekomme ein „Hellgrün“ statt „Sattgrün“

Was ich bisher habe:

    Function MischMich(Farbe1 As Color, Farbe2 As Color, Optional AnteilFarbe1 _
      As Double = 0.5) As Color
        Dim AnteilFarbe2 As Double = 1 - AnteilFarbe1
        '▼▼▼ Trennen in RGB-Variablen für einfachere 
        ' Handhabung beim Experimentieren,
        ' etwas übertrieben nach Double, wird alles später optimiert ;-)
        Dim R1 As Double = Farbe1.R
        Dim G1 As Double = Farbe1.G
        Dim B1 As Double = Farbe1.B
        Dim R2 As Double = Farbe2.R
        Dim G2 As Double = Farbe2.G
        Dim B2 As Double = Farbe2.B
        '▼▼▼ Umrechnen von RGB --> CMY:
        ' Vielleicht schon da ein Fehler?
        ' Ist das überhaupt nötig? 
        ' Vielleicht geht die Addition auch direkt aus RGB?
        Dim C1 As Double = 255 - R1
        Dim M1 As Double = 255 - G1
        Dim Y1 As Double = 255 - B1
        Dim C2 As Double = 255 - R2
        Dim M2 As Double = 255 - G2
        Dim Y2 As Double = 255 - B2
        '▼▼▼ Addition:
        ' Klappt bei dunklen Farben einigermaßen. Helle werden aber ZU hell.
        Dim C3 As Double = C1 * AnteilFarbe1 + C2 * AnteilFarbe2
        Dim M3 As Double = M1 * AnteilFarbe1 + M2 * AnteilFarbe2
        Dim Y3 As Double = Y1 * AnteilFarbe1 + Y2 * AnteilFarbe2
        '▼▼▼ Zurück nach RGB:
        Dim R3 As Double = 255 - C3
        Dim G3 As Double = 255 - M3
        Dim B3 As Double = 255 - Y3
        '▼▼▼ Und zurück als Farbe:
        Return Color.FromArgb(R3, G3, B3)
    End Function
Zum bequemen Nachstellen ein Form mit 3 Panels, 1 Label und einem TrackBar bauen und diesen Code einfügen:

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) _
      Handles MyBase.Load
        ' Mache ich sonst im Designer, für's Forum mal so:
        TrackBar1.Maximum = 100
        TrackBar1.TickFrequency = 10
        TrackBar1.RightToLeft = Windows.Forms.RightToLeft.Yes
        TrackBar1.Value = 50
        Panel1.BackColor = Color.FromArgb(0, 255, 255)
        Panel2.BackColor = Color.FromArgb(255, 255, 0)
        Label1.Text = TrackBar1.Value & "% : " & 100 - TrackBar1.Value & "%"
    End Sub
    Private Sub Panels_Click(sender As Object, e As System.EventArgs) Handles _
      Panel1.Click, Panel2.Click
        ColorDialog1.Color = DirectCast(sender, Panel).BackColor
        If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            DirectCast(sender, Panel).BackColor = ColorDialog1.Color
        End If
    End Sub
    Private Sub Panels_BackColorChanged(sender As Object, e As _
      System.EventArgs) Handles Panel1.BackColorChanged, Panel2.BackColorChanged
        Panel3.BackColor = MischMich(Panel1.BackColor, Panel2.BackColor, _
        TrackBar1.Value / 100)
    End Sub
    Private Sub TrackBar1_Scroll(sender As System.Object, e As _
      System.EventArgs) Handles TrackBar1.Scroll
        Panel3.BackColor = MischMich(Panel1.BackColor, Panel2.BackColor, _
        TrackBar1.Value / 100)
        Label1.Text = TrackBar1.Value & "% : " & 100 - TrackBar1.Value & "%"
    End Sub
In "Mittelstellung" der Trackbar ist das grün einfach zu hell.
Hat da jemand eine Idee?

Bye,

Dilbert

--
while (!asleep()) sheep++;

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Subtraktive Farbmischung3.359Dilbert22.08.16 22:05
Re: Subtraktive Farbmischung1.920Manfred X22.08.16 22:55
Re: Subtraktive Farbmischung1.905Dilbert22.08.16 23:03
Re: Subtraktive Farbmischung1.972Manfred X22.08.16 23:13
Re: Subtraktive Farbmischung2.155Dilbert22.08.16 23:21
Re: Subtraktive Farbmischung1.881Manfred X23.08.16 08:52
Re: Subtraktive Farbmischung1.885Dilbert23.08.16 18:14
Re: Subtraktive Farbmischung1.982Manfred X23.08.16 18:46
Re: Subtraktive Farbmischung1.930Dilbert23.08.16 19:41
Re: Subtraktive Farbmischung2.034Manfred X23.08.16 19:47
Re: Subtraktive Farbmischung1.853Dilbert24.08.16 20:13
Re: Subtraktive Farbmischung1.950Dilbert26.08.16 17:02
CMY-Farbmischung - RGB-Farbmischung - CMY nach RGB - RGB nac...2.001visualfx26.08.16 19:47
Update: CMY-Farbmischung - RGB-Farbmischung - CMY nach RGB -...1.917visualfx26.08.16 22:10
Re: Subtraktive Farbmischung1.933Dilbert26.08.16 22:27
Re: Subtraktive Farbmischung1.879Dilbert26.08.16 22:49
Re: Subtraktive Farbmischung1.888visualfx26.08.16 23:05
=== Nachtrag ===2.013visualfx27.08.16 00:24
Wikipedia: Subtraktive Farmischung !!!1.933visualfx27.08.16 11:04
Re: Subtraktive Farbmischung1.837Dilbert27.08.16 14:27
Additive / Subtraktive / Mittelwert-Farbmischung2.044visualfx27.08.16 15:04
Re: Subtraktive Farbmischung2.036Dilbert27.08.16 15:13
Re: Subtraktive Farbmischung1.901visualfx27.08.16 15:25
Re: Subtraktive Farbmischung2.041Kuno6020.10.16 08:01
Re: Subtraktive Farbmischung1.844Dilbert20.10.16 17:37

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel