20. november 2002 - 20:43
Der er
8 kommentarer og 2 løsninger
Hente RGB værdier fra farve
Jeg vil gerne kunne hente R, G og B ud af en farve, også når farven er negativ - fx -2147483633 (Form1.BackColor). Er der nogen der kan klare det for mig? -Mikkel
Annonceindlæg fra HP
20. november 2002 - 22:52
#1
Hej. Jeg kender ikke til negative farver. Kan kun oplyse (hvad du sikkert ved) at du kan benytte at angive rgb(255,255,255) = hvid rgb(0,0,0) = sort M.v.h. Jørn
20. november 2002 - 23:15
#2
Hvis jeg udskriver Form1.BackColor får jeg vist et negativt tal ... Og jeg skal kunne gå den anden vej, altså fra sort til R = 0, G = 0, B = 0.
20. november 2002 - 23:17
#3
Hej. Den er lidt slem. De alm farver som du selv kan definere er ganske rigtigt RGB hvor værdien for Form1.BackColor er 00RRBBGG i HEX. Sort er 00000000 og hvid 00FFFFFF. Er værdien negativ, drejer det sig om en systemfarve. Altså standard farve for vinduesramme baggrund eller lign. Det går bare efter listen: Scrollbar -2147483640 svarende til 80000000 HEX Desktop -2147483641 svarende til 80000001 HEX o.s.v. prøv selv at ændre farverne, så kan du vælge palette eller system farver.
20. november 2002 - 23:21
#4
2147483633 (8000000F i HEX) svarer så til farven på din knap, altså buttonface. Hvilken farve den har er så ikke bestemt af dit program.
20. november 2002 - 23:23
#5
Ups Scrollbar -2147483648 svarende til 80000000 HEX Desktop -2147483647 svarende til 80000001 HEX Skulle det være
20. november 2002 - 23:54
#6
Backcolor = 4966415 Blå = (Backcolor/256)/256 resultat 75 Grøn = (Backcolor/256) - (Blå værdi*256) resultat 200 Rød =Backcolor -(Grøn værdi*256)+((Blå værdi*256)*256) resultat 15 I regnearket har jeg sat den til heltal, ellers kommer der decimaler
21. november 2002 - 00:05
#7
Ok, det forstår jeg .. Kan man på nogen måde konvertere disse systemfarver til normale farver? Evt med et API-kald el. lign.?
21. november 2002 - 00:06
#8
kabbak > den skal også kunne klare de negative tal - altså systemfarver..
21. november 2002 - 00:48
#9
Fandt selv ud af det: Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long 'Color conversion : from long to rgb Public Sub CRGB(ByVal Color As Long, R As Integer, G As Integer, B As Integer) If Color < 0 Then Dim FirstIndex As Long FirstIndex = &H80000000 Color = GetSysColor(Abs(Color - FirstIndex)) End If Dim L As Long Color = Abs(Color) L = Int(Color / 256) R = Color - L * 256 Color = Int(Color / 256) L = Int(Color / 256) G = Color - L * 256 Color = Int(Color / 256) L = Int(Color / 256) B = Color - L * 256 End Sub Men rynke10 skal have tak for hjælpen - 15 af de 30 point går til dig! resten tager jeg selv :o) - Mikkel
24. november 2002 - 02:20
#10
Kurser inden for grundlæggende programmering