Discussione:
calcolo colore negativo
(troppo vecchio per rispondere)
unknown
2007-11-03 10:14:32 UTC
Permalink
Per ottenere il codice di un colore, partendo dalle sue componenti RGB,
sapete tutti che si utilizza la funzione RGB() di VBA.

Una volta che si hanno i valori numerici delle componenti RGB, sapete dirmi
qual'è la formula matematica per il calcolo del colore negativo?
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
Alessandro Baraldi
2007-11-03 10:40:59 UTC
Permalink
Post by unknown
Per ottenere il codice di un colore, partendo dalle sue componenti RGB,
sapete tutti che si utilizza la funzione RGB() di VBA.
Una volta che si hanno i valori numerici delle componenti RGB, sapete dirmi
qual'è la formula matematica per il calcolo del colore negativo?
--
Ciao Gabriele.
La cosa in realtà non è così semplice...
Cosa intendi per colore Negativo....?
Intendi quello con maggio contrasto rispetto al Colore iniziale...?

La cosa più semplice è questa:
NewColor = BacGroundColor Xor &HFFFFFF

Ma non funziona con le tonalità di grigio medio ed è anche
comprensibile...

Puoi provare con questo è un compromesso accettabile a mio avviso:
NewColor = Not (OldCOLOR Xor &HFF000000)
If Abs(NewColor - OldCOLOR ) < 66000 Then NewColor = vbWhite

La cosa non si risolve lavorando con RGB ma lavorando con HSL e sulla
sfericità del colore...!
Scendendo nel tecnico la sfera colore 3D(HSL) serve sfasarsi dal
colore originale sapendo che in realtà l'angolo sferico non è di 360°
ma di 240°.....!

Quì ti posto qualche cosa che feci qualche tempo fà...

Private Declare Sub ColorRGBToHLS Lib "shlwapi.dll" ( _
ByVal clrRGB As Long, _
pwHue As Integer, _
pwLuminance As Integer, _
pwSaturation As Integer)

Private Declare Function ColorHLSToRGB Lib "shlwapi.dll" ( _
ByVal wHue As Integer, _
ByVal wLuminance As Integer, _
ByVal wSaturation As Integer) As Long

.......
Dim intH As Integer
Dim intL As Integer
Dim intS As Integer
Dim lngRGB As Long
lngRGB = InitColor ' &H808080

Call ColorRGBToHLS(lngRGB, intH, intL, intS)
' Algoritmo di inversione colore....
intH = (intH + 120) Mod 240
intL = (intL + 120) Mod 240
intS = 240

EndColor= ColorHLSToRGB(intH, intL, intS)

Se hai bisogno fammi sapere.

Ciao
@Alex
unknown
2007-11-03 10:57:07 UTC
Permalink
Post by Alessandro Baraldi
La cosa in realtà non è così semplice...
Cosa intendi per colore Negativo....?
Intendi quello con maggio contrasto rispetto al Colore iniziale...?
[omissis]

Allora vediamo di trovare una risposta alla tua domanda: quale algoritmo
utilizza Windows, ad esempio, per il testo evidenziato?
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
Alessandro Baraldi
2007-11-03 11:02:10 UTC
Permalink
Post by unknown
Post by Alessandro Baraldi
La cosa in realtà non è così semplice...
Cosa intendi per colore Negativo....?
Intendi quello con maggio contrasto rispetto al Colore iniziale...?
[omissis]
Allora vediamo di trovare una risposta alla tua domanda: quale algoritmo
utilizza Windows, ad esempio, per il testo evidenziato?
Quello che ti ho detto(vale a dire passando per HSL ha pure le
chiamate API non le avrà fatte per bellezza) anche perchè è l'unico
che funziona sempre in modo uguale.
;-)

Il WorkAround che ti ho proposto funziona ma da una risposta
tutt'altro che proporzionale(anche se funzionale) ti basta testare su
sfumature diverse di colore.

@Alex
Franco
2007-11-05 13:37:50 UTC
Permalink
Il 03 Nov 2007, 11:57, Gabriele Bertolucci <"info[at]pbsoft[dot]it"> ha
Post by unknown
Post by Alessandro Baraldi
La cosa in realtà non è così semplice...
Cosa intendi per colore Negativo....?
Intendi quello con maggio contrasto rispetto al Colore iniziale...?
[omissis]
Allora vediamo di trovare una risposta alla tua domanda: quale algoritmo
utilizza Windows, ad esempio, per il testo evidenziato?
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
Il colore usato da Windows per la selezione di qualsiasi oggetto è quello
complementare a quello usato nell'oggetto stesso.
Dovresti quindi documentarti sui colori complementari.
Saluti
Franco

--------------------------------
Inviato via http://arianna.libero.it/usenet/
ALESSANDRO Baraldi
2007-11-05 15:49:31 UTC
Permalink
Post by Franco
Il colore usato da Windows per la selezione di qualsiasi oggetto è quello
complementare a quello usato nell'oggetto stesso.
Dovresti quindi documentarti sui colori complementari.
Saluti
Franco
Franco mi pare una risposta di Rutelli....!

Il colore complementare si deve calcolare dal colore Originale, poi se
il colore originale è tra i QBColor è semplice(relativamente) ma per
funzionare
sempre serve avere le idee chiare.... rileggiti le mie risposte, non sono la
bibbia ma trovi la risposta e magari puoi approfondire...
--
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------
Loading...