Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Definire colore testo dal codice asp

    Sono un po' indecisa se sia corretto o meno postare qui il mio problema, comunque ci provo.

    In una pagina asp ho un titolo e uno sfondo di div che sono legati tra di loro nel senso che il titolo è del colore "scuro" mentre lo sfondo del div è lo stesso colore ma in tonalità più chiara.

    Mi è venuto così in mente di far inserire solo un colore nel DB da cui prendo le informazioni per creare questa pagina e con uno script molto semplice:

    codice:
    coloreN = clng("&h" & matriceProgrammaS(18,0))              
    coloreN = coloreN-3555404              
    coloreH = Hex(coloreN)
    ricavo il colore che mi serve.
    L'unico mio problema è che quel numero: 3555404
    che vado a sottrare al colore principale per ottenere la variante più scura me lo sono ricavato empiricamente facendo qualche prova con serie di colori che mi sembravano potessero andare.

    Ora chiedo: ci sono, da qualche parte, delle referenze che posso andare a leggermi per cercare di capire meglio come farlo funzionare visto che a volte mi va a prendere colori che proprio non c'azzeccano?

    Ci sono altri metodi?
    annaelle

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    I colori in esadecimale sono formati dalle combinazioni di rosso, verde e blu con valori che vanno da 00 a FF (che in decimale sarebbe da 0 a 255)
    Ad esempio il rosso è #FF0000, il verde è #00FF00, il blu è #0000FF, il bianco è #FFFFFF, il nero è #000000
    Per avere una versione più scura di un colore bisogna spostarsi dal colore verso il nero.
    L'ideale sarebbe una funzione che crea le sfumature dal colore al nero così puoi decidere quanto "oscurare" il colore.
    Io mi sono fatto delle funzioni per gestire i colori che potrebbero andare bene
    codice:
    <%
    Function rgb2hex(r,g,b)
        dim strHex
    	strHex = ""
    	strHex = strHex & Right("0" & Hex(r),2)
    	strHex = strHex & Right("0" & Hex(g),2)
    	strHex = strHex & Right("0" & Hex(b),2)
    	strHex = "#" & strHex
    	rgb2hex = strHex
    End Function
    	
    Function CreaSfumaturaH(qtaColori,hexDa,hexA)
        dim rda,gda,bda,ra,ga,ba,stepX,strColore,csj,xr,xg,xb
    	bda = CLng("&H"&Mid(hexDa,Len(hexDa)-1,2))
    	gda = CLng("&H"&Mid(hexDa,Len(hexDa)-3,2))
    	rda = CLng("&H"&Mid(hexDa,Len(hexDa)-5,2))
    	ba = CLng("&H"&Mid(hexA,Len(hexA)-1,2))
    	ga = CLng("&H"&Mid(hexA,Len(hexA)-3,2))
    	ra = CLng("&H"&Mid(hexA,Len(hexA)-5,2))
    	stepX = (255/(qtaColori))
    	strColore = ""
    	for csj=0 to 255 step stepX
    		xr = Round(csj/255*ra+(255-csj)/255*rda)
    		xg = Round(csj/255*ga+(255-csj)/255*gda)
    		xb = Round(csj/255*ba+(255-csj)/255*bda)
    		strColore = strColore & rgb2hex(xr,xg,xb) & ","
    	next
    	if strColore<>"" then strColore=Left(strColore,Len(strColore)-1)
    	CreaSfumaturaH = Split(strColore,",")
    End Function
    
    
    Function Scurisci(coloreHex)
        dim arr
        arr=CreaSfumaturaH(10,coloreHex,"#000000")
        Scurisci = arr(5)
    End Function
    
    
    'esempio di utilizzo
    colori=Array("#D61C1C","#3D6FE3","#6DD494","#B25EF2","#F8F50A")
    
    
    for i=LBound(colori) to UBound(colori)
        %><div style="padding:10px;background:<%=Scurisci(colori(i))%>;color:<%=colori(i)%>;">testo: <%=colori(i)%><br />sfondo: <%=Scurisci(colori(i))%></div><%
    next
    %>

  3. #3
    Grazie mille!
    Funziona tutto perfettamente ed è esattamente quello che mi serviva!

    Semplicemente aggungendo
    codice:
    Function Schiarisci(coloreHex)
      dim arr
      arr=CreaSfumaturaH(10,coloreHex,"#ffffff")
      Schiarisci = arr(5)
    End Function

    ottengo anche l'inverso.

    Ero lontana anni luce da questa soluzione.
    annaelle

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.