Ok, ben bezig met een proggie, en wil daarbij zelf de gebruiker een gradient laten kiezen van text. Het word een soort van HTMLeditor, en de RGB2HEX-kleur daar heb ik een routine voor die goed werkt.
De gebruiker kiest dus zelf 2 kleuren die hij naar een overloop wil hebben, en een overloop bestaat uit 4 kleuren dus >> Gebruikersgekozenkleur >> een kwart daarvanaf > De helft daarvanaf >> Andere GEbruikersgekozenkleur.
Nu heb ik best een aardige routine, maar weet niet hoe ik nu verder moet om de 4 kleuren daaruit te halen. Als ik dit gebruik, geeft hij in mijn textbox 4 dezelfde kleuren in plaats van 4 verschillende.
Dit is zo een beetje de code... ik kies dus ROOD en PAARS, onder command_click, maar hij geeft 4 dezelfde kleuren weer in de textbox daarna...bij dit voorbeeld : #8080FF 4 x...
Volgens mij zou hij op deze manier moeten werken, maar niet dus....
Als iemand ff tijd heb om hiernaar te kijken, graag.
De gebruiker kiest dus zelf 2 kleuren die hij naar een overloop wil hebben, en een overloop bestaat uit 4 kleuren dus >> Gebruikersgekozenkleur >> een kwart daarvanaf > De helft daarvanaf >> Andere GEbruikersgekozenkleur.
Nu heb ik best een aardige routine, maar weet niet hoe ik nu verder moet om de 4 kleuren daaruit te halen. Als ik dit gebruik, geeft hij in mijn textbox 4 dezelfde kleuren in plaats van 4 verschillende.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
| Option Explicit Private Type TypeRGB 'This user type is used to convert long decimals to Bytes r As Byte G As Byte b As Byte End Type Private Type TypeLong 'This user type is used to convert long decimals to Bytes RGBColor As Long End Type Private Function MaakGradient(ByVal Text As String, Color1 As Long, Color2 As Long) Dim count As Long, i As Long 'count = Len(Text) + 1: If count = 1 Then Exit Function Dim r1 As Integer, r2 As Integer Dim g1 As Integer, g2 As Integer Dim b1 As Integer, b2 As Integer Dim Col1 As TypeRGB, Col2 As TypeRGB Col1 = RGB2typeRGB(Color1) Col2 = RGB2typeRGB(Color2) r1 = Col1.r: g1 = Col1.G: b1 = Col1.b r2 = Col2.r: g2 = Col2.G: b2 = Col2.b Dim rD As Integer, gD As Integer, bD As Integer Dim rF As Integer, gF As Integer, bF As Integer Dim s As String, Code As String, out As String rD = r1 - r2 gD = g1 - g2 bD = b1 - b2 For i = 1 To 4 'rf = Int(IIf(rd < 0, r1 + Int(Abs(rd / Ccount * i)), r1 - Int(Abs(rd / Ccount * i)))) Mod 255 'gf = Int(IIf(gd < 0, r1 + Int(Abs(gd / Ccount * i)), r1 - Int(Abs(gd / Ccount * i)))) Mod 255 'bf = Int(IIf(bd < 0, r1 + Int(Abs(bd / Ccount * i)), r1 - Int(Abs(bd / Ccount * i)))) Mod 255 rF = Int(r1 - (rD / i * i)) 'Mod 255 gF = Int(g1 - (gD / i * i)) 'Mod 255 bF = Int(b1 - (bD / i * i)) 'Mod 255 If rD = 0 Then rF = r1 If gD = 0 Then gF = g1 If bD = 0 Then bF = b1 On Error Resume Next Text1.Text = Text1.Text & RGB2HTML(RGB(rF, gF, bF)) & vbCrLf Next i End Function Function RGB2HTML(ByVal RGBColor As Long) As String Dim tmpCol As TypeRGB With tmpCol .r = RGBColor Mod 256 .G = (RGBColor \ 256) Mod 256 .b = RGBColor \ 65536 End With Dim RString As String, GString As String, BString As String RString = Trim(Hex$(tmpCol.r)) GString = Trim(Hex$(tmpCol.G)) BString = Trim(Hex$(tmpCol.b)) If Len(RString) = 1 Then RString = "0" & RString If Len(GString) = 1 Then GString = "0" & GString If Len(BString) = 1 Then BString = "0" & BString RGB2HTML = "#" & RString & GString & BString End Function Function HTML2RGB(ByVal sHexColor As String) As Long Dim lCol As Long, i, n If Left(sHexColor, 1) = "#" Then sHexColor = Mid(sHexColor, 2) sHexColor = UCase(sHexColor) For i = 1 To Len(sHexColor) Step 2 lCol = lCol + Dec(Mid(sHexColor, i, 2)) * 256 ^ n n = n + 1 Next i HTML2RGB = lCol End Function Private Function RGB2typeRGB(ByVal RGBColor As Long) As TypeRGB With RGB2typeRGB .r = RGBColor Mod 256 .G = (RGBColor \ 256) Mod 256 .b = RGBColor \ 65536 End With End Function Private Function HTML2typeRGB(ByVal HTMLColor As String) As TypeRGB Dim temp As String temp = HTML2RGB(HTMLColor) Dim out As TypeRGB out = RGB2typeRGB(temp) With HTML2typeRGB .r = out.r .G = out.G .b = out.b End With End Function Private Sub Command1_Click() MaakGradient Text1.Text, 255, 16744576 End Sub |
Dit is zo een beetje de code... ik kies dus ROOD en PAARS, onder command_click, maar hij geeft 4 dezelfde kleuren weer in de textbox daarna...bij dit voorbeeld : #8080FF 4 x...
Volgens mij zou hij op deze manier moeten werken, maar niet dus....
Als iemand ff tijd heb om hiernaar te kijken, graag.