Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0456: HTML-Farbwerte in Long-Werte umrechnen und umgekehrt

 von 

Beschreibung 

Wer schon immer mal diese HTML-Farbcodes(Beispielsweise #FF0000 für Rot) mit VB erstellen oder einlesen wollte, kann sich diesem Tipp bedienen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

RtlMoveMemory (CopyMemory), OleTranslateColor

Download:

Download des Beispielprojektes [2,34 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Code von Benjamin Wilger
' Benjamin@ActiveVB.de
' Copyright (C) 2001
Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" _
                    Alias "RtlMoveMemory" ( _
                    pDest As Any, _
                    pSrc As Any, _
                    ByVal ByteLen As Long)
                    
Private Declare Sub OleTranslateColor Lib "oleaut32.dll" ( _
                    ByVal clr As Long, _
                    ByVal hpal As Long, _
                    ByRef lpcolorref As Long)
                    
Private Sub Form_Load()

    Me.AutoRedraw = True
    Me.Print "Der HTML-Code von vbRed ist: " & Long2Hexcode(vbRed)
    Me.Print "Der HTML-Code von vbGreen ist: " & Long2Hexcode(vbGreen)
    Me.Print "Der HTML-Code von vbYellow ist: " & Long2Hexcode(vbYellow)
    Me.Print "Der HTML-Code von vbBlue ist: " & Long2Hexcode(vbBlue)
    Me.Print "Der HTML-Code von vbMagenta ist: " & Long2Hexcode(vbMagenta)
    Me.Print "Der HTML-Code von vbButtonFace ist: " & Long2Hexcode(vbButtonFace)
    Me.Print "-"
    Me.Print "Der Long-Wert von #FFCC00 ist: " & Hexcode2Long("#FFCC00")
    
End Sub

Private Function Hexcode2Long(Hexcode As String) As Long

    Dim R As Integer
    Dim G As Integer
    Dim B As Integer
    Dim T As String
    
    T = Replace(Hexcode, "#", "")
    R = Val("&H" & Mid(T, 1, 2))
    G = Val("&H" & Mid(T, 3, 2))
    B = Val("&H" & Mid(T, 5, 2))
    Hexcode2Long = RGB(R, G, B)
    
End Function

Private Function Long2Hexcode(RGBColor As Long) As String

    Dim Bytes(0 To 3) As Byte
    Dim R As String, G As String, B As String
    
    ' Ggf. eine Systemfarbe umwandeln.
    If RGBColor < 0 Then OleTranslateColor RGBColor, 0&, RGBColor
    
    ' Einfach den Farbwert in ein Byte-Array pusten,
    ' dann können ganz einfach deren Bestandteile ausgelesen werden.
    CopyMemory Bytes(0), RGBColor, 4
    Long2Hexcode = "#" & toHex(Bytes(0), 2) & toHex(Bytes(1), 2) & toHex(Bytes(2), 2)
    
End Function

' Gibt einen Hex-String mit führenden Nullen zurück.
Private Function toHex(ByVal Number As Long, ByVal NumLen As Integer, _
    Optional ByVal UpperCase As Boolean) As String
    
    Dim C As String
    
    C = Hex(Number)
    
    If Len(C) < NumLen Then
    
        C = String(NumLen - Len(C), "0") & C
        
    End If
    
    If Not UpperCase Then
    
        toHex = LCase(C)
        
    Else
    
        toHex = C
        
    End If
    
End Function


'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 5 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Rudi Kimm am 23.06.2007 um 10:50

Auch auf VISTA mit Office 2007 funktioniert dieser Tipp.
In der Auswahl ist diese Variante noch nicht enthalten.

Kommentar von Adler am 27.09.2003 um 22:10

Geil!
Damit kann ich leben :-D

Kommentar von MasterOD am 09.06.2002 um 15:41

Das seh ich anders. also wenn man das hier nimmt:
farbe = vbRed
hexfarbe = Hex(farbe)
hexfarbe = String(6 - Len(hexfarbe), "0") + hexfarbe
ergebnis = "#" + Mid(hexfarbe, 5, 2) + Mid(hexfarbe, 3, 2) + Mid(hexfarbe, 1, 2)
MsgBox ergebnis
hat man das prob einfach gelöst

Kommentar von Benjamin Wilger am 17.05.2002 um 20:50

Hallo "Master"...
nein. Dann probier mal Deine Methode mit vbRed oder so. HTML-Hexwerte müssen eine feste Länge haben. Und der Code von Dir würde ziemlich lang werden, glaube ich. Aber im Prinzip hast Du Recht. Die Lösung von Dir ist in meinen Augen umständlich und meine ist in Deinen Augen umständlich ;D

Kommentar von MasterOD am 03.05.2002 um 16:45

geht das nich auch einfacher über den
HEX befehl? und dann alle 2 Buchstaben/Zahlen drehen?
also z.b.:
(long farbwert)2175000
ergiebt
mit HEX(2175000), '21 30 18' und dann einfach drehen '18 30 21' und schon hat man das.