Avatar billede grydgaard Nybegynder
20. januar 2003 - 11:26 Der er 19 kommentarer og
2 løsninger

Commondialog1.color omregmet til RGB farver i hex

Hejsa eksperter.

jeg har et lille problem. jeg kan sagtens få konventeret farverne fra commondialog control til hex men den viser de forkerte hexverdier for farverne. hvordan får jeg tvunget den til at vise det rigtige samt tvunget den til at vise et 6 cifret tal i stedet for at den nogle gange lave 2 (som for elsempel i rød)?

hilsen tommy
Avatar billede martin_moth Mester
20. januar 2003 - 11:57 #1
Hvad viser den for rød - og grøn - og blå?
Avatar billede grydgaard Nybegynder
20. januar 2003 - 12:08 #2
rød = FF
grøn = FF00
blå = FF0000
Avatar billede martin_moth Mester
20. januar 2003 - 12:34 #3
Jamen - så er det jo blot et spørgsmål om at udfylde de resterende nuller foran tallet.

For det er jo således, at:
FF = 0000FF = Rød
FF00 = 00FF00 = grøn
osv.

Dette kan gøres sådan her:

  Dim HEXcolor As String
  Dim HEXcolor6digits As String * 6
 
  HEXcolor = "FF00" 'Bare for at teste
  If Len(HEXcolor) < 6 Then
    HEXcolor6digits = String(6 - Len(HEXcolor), "0") & Trim(HEXcolor)
  End If
  msgbox "Med 6 cifre ser tallet således ud: " & HEXcolor6digits
Avatar billede grydgaard Nybegynder
20. januar 2003 - 12:37 #4
problemet er at den bytter om på rød og blå. jeg skal bruge det til et program til hjemmesider og browsere sigere at rød er FF0000. kan du så forstå mit problem?
Avatar billede martin_moth Mester
20. januar 2003 - 12:42 #5
Nej

FF = 0000FF = rød i VB

Det kunne tyde på, at der er en forskel, således at RGB egentligt er BGR - men det kan du jo stadig klare, hvis du bare deler tallet op i protioner af 2 - de første 2 cifre er rød (eller blå), de midterste 2 er grøn og de sidste 2 er blå (eller rød)
Avatar billede martin_moth Mester
20. januar 2003 - 12:44 #6
Du kan jo fx. læse tallet fra højre mod venstre :o)
Avatar billede grydgaard Nybegynder
20. januar 2003 - 12:47 #7
jeg skal have de 2 første skiftet ud med de 2 sidste... hvordan gør jeg det?
Avatar billede grydgaard Nybegynder
20. januar 2003 - 12:48 #8
det giver ikke de rigtige farver
Avatar billede grydgaard Nybegynder
20. januar 2003 - 12:49 #9
jeg er rimelig ny til VB programmering men har lavet hjemmesider siden 97
Avatar billede martin_moth Mester
20. januar 2003 - 13:01 #10
RGB-farver virker på denne måde:

XX YY ZZ, hvor XX er værdien for rød, YY er værdien for grøn og ZZ er værdien for blå. Altså et 6-cifret tal. Værdierne varierer fra 0 til FF hvis du bruger hexideciamale tal - fra 0 til 255 hvis du bruger 10-talssystemet.

Altså er det et spørgsmål og at dele tallet - om det er hexidecimalt, 10-talsystem eller binært eller whatever) op i 3 protioner, der reprecenterer værdien for hhv. rød, grøn og blå... Der er masser af strenge manipultaionsfunktioner der kan det, fx. mid(). Men jeg tvivler på at det er det du vil - kan du ikke bruge funktionen RGB() til noget?
Avatar billede grydgaard Nybegynder
20. januar 2003 - 13:07 #11
jeg prøver lige at stille det simpelt op en gang til.

i VB skriver den rød i HEX kode som: 0000FF
i HTML skriver den rød i HEX kode som: FF0000

jeg skal bruge et output som svare til HTML farverne.
hvordan får jeg dette resultat? det hjælper ikke at læse hexkoden bagfra. det giver den forkerte farve.
Avatar billede martin_moth Mester
20. januar 2003 - 13:17 #12
Fra mit svar 12:34:11 får du hexkoden som 6-cifret tal.

Så skal du bare nappe de første 2 cifre og bruge det som Blå
De midterste som grøn
De sidste som rød

Det kan du gøre med mid()-funktionen :o)
Avatar billede grydgaard Nybegynder
20. januar 2003 - 13:19 #13
hvis jeg skal ka bruge RGB() til noget så skal jeg have et eksempel.
Avatar billede grydgaard Nybegynder
20. januar 2003 - 13:20 #14
jeg ved ikke hvordan jeg bruger mid() til noget. jeg startede med VB programmering for ca 1 månede siden og kan ikke ret meget endnu
Avatar billede ocp Nybegynder
20. januar 2003 - 14:26 #15
Msgbox("#" & hex(rgb(rød,grøn,blå)))
Avatar billede martin_moth Mester
20. januar 2003 - 14:47 #16
"jeg ved ikke hvordan jeg bruger mid() til noget" - Jamen, er det så ikk esmart, at man som i alle andre programmer kan bruge en hjælpefunktion i VB ;o)
Avatar billede grydgaard Nybegynder
20. januar 2003 - 14:57 #17
martin >> helt i orden. jeg giver dig 15 point for at have hjulpet mig med 1 ud af 2 problemer.
ocp >> jeg kan ikke bruge dit eksempel til noget
Avatar billede ocp Nybegynder
20. januar 2003 - 15:17 #18
Den her virker:

    Dim strHex As String
    Dim strHtmlColor As String

    CommonDialog1.ShowColor
    strHex = Format$(Hex(CommonDialog1.Color), "000000")
   
    While Len(strHex) < 6
        strHex = "0" & strHex
    Wend
   
    strHtmlColor = (Right(strHex, 2) & Mid(strHex, 3, 2) & Left(strHex, 2))

    MsgBox strHtmlColor
Avatar billede ocp Nybegynder
20. januar 2003 - 15:18 #19
OK, jeg glemte lige at fjerne Format$:

    Dim strHex As String
    Dim strHtmlColor As String

    CommonDialog1.ShowColor
    strHex = Hex(CommonDialog1.Color)
   
    While Len(strHex) < 6
        strHex = "0" & strHex
    Wend
   
    strHtmlColor = (Right(strHex, 2) & Mid(strHex, 3, 2) & Left(strHex, 2))

    MsgBox strHtmlColor
Avatar billede grydgaard Nybegynder
22. januar 2003 - 09:58 #20
ocp >> den eksempel du gav virker ikke. denne linie melder fejl:
strHtmlColor = (Right(strHex, 2) & Mid(strHex, 3, 2) & Left(strHex, 2))
Avatar billede grydgaard Nybegynder
22. januar 2003 - 10:03 #21
nu har jeg fået det til at virker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester