Der Farbcode in VB

MacInternet

Mitglied
Guten Morgen,

habe mir jetzt die halbe Nacht um die Ohren geschlagen - aber mit dem Farbcode stimmt doch was nicht:

Mein Programm in VB ermittelt den Code einer bestimmten Farbe, rechnet ihn in einen Hex-Wert um und übergibt ihn an eine andere Datei.
Wenn dieser Farbcode z.B. in einer HTML-Datei verwendet wird - dann kommen da aber ganz andere Farben bei raus! So wird aus Pink plötzlich lila, aus orange plötzlich hellblau - das kann doch gar nicht sein. Oder doch?

Könnte es möglich sein, daß sich entweder in VB oder auch in HTML der Farbcode irgendwie anders als RGB zusammensetzt? Und falls ja: wie?
Wer kann mir helfen, den Farbcode in VB so zu ermitteln, daß er auch in HTML die gleiche Farbe erzeugt?

Danke schon mal im voraus und einen schönen Sonntag,
Mac
 
Wie holst Du dir den Farbcode denn?
Also mit welchem Befehl?
 
Zuletzt bearbeitet:
Wie holst Du dir den Farbcode denn?
Also mit welchem Befehl?

Der wird über die Farbauswahl im CommonDialog mit einer Variable vom Typ OLE_COLOR ermittelt.
Solange ich in VB bleibe, stimmt die Farbe auch - erst, wenn sie übergeben wird, stimmt's nicht mehr. So wird der ermittelte Farbwert in einem Label zur Kontrolle ausgegeben - korrekt. Wird eine HTML-Seite mit exakt dem gleichen Farbwert erstellt, dann sieht die Farbe ganz anders aus. Egal, ob Vorder- oder Hintergrund.
Ich dachte immer, alle arbeiten mit der Reihenfolge RGB - aber irgendwie hab ich das Gefühl, daß da irgendwer nicht mitspielt...

Kann da jemand helfen? Weil die Farbcodes in meinem Programm eine ziemlich wichtige Rolle spielen...

Gruß Mac
 
Probier doch mal diese Funktion:
Code:
Declare Function GetPixelColor Lib "gdi32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long) As Long
 
Hallo

Veilleicht postest du ein wenig Code von der Funktion die die Zahl umrechnet.
Das hilft in manchen Fällen sehr viel weiter..

mfg

Philipp9494
 
Hallo

Veilleicht postest du ein wenig Code von der Funktion die die Zahl umrechnet.
Das hilft in manchen Fällen sehr viel weiter..

mfg

Philipp9494

Na, umgerechnet wird schlicht mit Hex$:

Visual Basic:
E_Farbe = Hex$(V_Farbe)

Jetzt, wo ich so darüber nachdenke: ja, es könnte sein, daß der Fehler hier liegt. Denn innerhalb von VB bleibt es ja bei dieser Berechnung.
Wie muß denn der ermittelte Farbcode korrekt nach Hex umgerechnet werden?

Mac
 
ich weiß nicht ob das stimmt was ich jetzt sage:

ich finde das das nicht gehen kann, denn der Wert von der Farbe Orange ist zum Beispiel 33023 das ist dann in Hex 80FF. Der RGB-Wert ist aber FF8000.

Bei Rot(255) zum Beispiel stimmt es wieder FF0000
 
ich weiß nicht ob das stimmt was ich jetzt sage:

ich finde das das nicht gehen kann, denn der Wert von der Farbe Orange ist zum Beispiel 33023 das ist dann in Hex 80FF. Der RGB-Wert ist aber FF8000.

Bei Rot(255) zum Beispiel stimmt es wieder FF0000

Ja, ganz offensichtlich scheint hier das Problem zu liegen: die Funktion Hex$ scheint das nicht alles so umzurechnen, wie ich es gerne hätte. Also ist mein Rechner doch nicht farbenblind, wie ich zuerst dachte... ;-)

Bloß: wer weiß, wie man die dezimalen Farbcodes korrekt in hexadezimal umrechnet?
Bitte dringend melden, wer es weiß!

Danke, Mac
 
Ich habe das Problem soeben gelöst bekommen. Für alle, die das gleiche Problem haben:

Sowohl die Hex-Funktion in VB ist korrekt als auch die Farbermittlung. Es ist in der Tat wie vermutet das Problem, daß sich HTML nicht an die RGB-Reihenfolge hält.

Mit der folgenden Funktion kann der VB-Wert in den korrekten RGB-Wert für HTML umgewandelt werden:

Visual Basic:
Function RGB2HTML(RGB)
  'Long in Hex umwandeln:
  RGB2HTML = Right("00000" & Hex(RGB), 6)

  'RGB-Werte richtig sortieren:
  RGB2HTML = "'#" & _
      Mid(RGB2HTML, 5, 2) & _
      Mid(RGB2HTML, 3, 2) & _
      Mid(RGB2HTML, 1, 2) & "'"
End Function

Bitte bei der Übergabe an die Funktion daran denken, daß der Code vorher NICHT in Hex umgerechnet wird, diese Funktion erwartet den dezimalen VB-Code!

Viele Grüße,
Mac
 
Zurück