jak12345
Messages postés21Date d'inscriptiondimanche 15 octobre 2006StatutMembreDernière intervention 3 avril 2007
-
17 oct. 2006 à 11:14
schlen
Messages postés8Date d'inscriptionjeudi 8 mars 2007StatutMembreDernière intervention13 mars 2007
-
9 mars 2007 à 12:44
bonjour,
comment creer une palette de gris?
comment indexer une palette de gris?
merci
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 17 oct. 2006 à 11:59
Pour une pallette de gris, tu as droit à 256 nuances du noir total (0) au blanc total (255). Pour faire du gris, il faut que les trois composantes Rouge, Vert, Bleu aient exactement la même valeur.
Pour créer une palette tu as le choix, tableaux, collection, création de la nuance au moment de l'utilisation
Pour le tableau ou la collection, il faudra au préalable les remplir avec les 256 nuances.
Voila un petit exemple :
Public Class Form1
'Déclaration de la palette
Dim PaletteGris As New Collection()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Remplissage de la collection PaletteGris
For i As Integer = 0To255
PaletteGris.Add(Color.FromArgb(i, i, i))
Next
Me.BackColor = PaletteGris(TrackBar1.Value)
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
Me.BackColor = PaletteGris(TrackBar1.Value)
End Sub
End Class
Coloration syntaxique automatique [Sevyc64]
---- Sevyc64 (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
schlen
Messages postés8Date d'inscriptionjeudi 8 mars 2007StatutMembreDernière intervention13 mars 2007 8 mars 2007 à 05:31
oui mais il y à plus simple.
public Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
public Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
private sub FormLoad()
for x =0 to ...
for y=0 to ...
tmp= GetPixel
(hdc,x,y) 'variable temporaire
'séparation des 3 couleurs
r = col Mod 256
g = ((col \ 256) Mod 256)
b = Int(col / 65536)
'calcul du gris
gris = int((r + g + b)/3)
setpixel hdc, x,y, RGB( gris, gris, gris)
next y
next x
end sub
Et voila, ton image sera toutes grise!
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 8 mars 2007 à 09:09
schlen, ou est la palette de gris là ????
Toi tu ne crée qu'une seule nuance de gris et je peux même te dire laquelle, Noir total.
Regarde bien ton code.
De plus ton code laisserais à croire que tu transforme une couleur RGB en nuance de gris, c'est totalement faux. Pour transformer une image couleur en nuance de gris, il ne suffit pas de prendre la moyenne des 3 composantes RGB. La formule n'est pas celle là, la nuance se calcule à partir de coefficients diffrents à appliquer sur chacune des composantes.
La formule exacte pour des couleurs dites naturelles est :
<dd>Gris = 0.2125*Rouge + 0.7154*Vert + 0.0721*Bleu
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Vous n’avez pas trouvé la réponse que vous recherchez ?
schlen
Messages postés8Date d'inscriptionjeudi 8 mars 2007StatutMembreDernière intervention13 mars 2007 8 mars 2007 à 19:53
En vrai sa fait 1ans que je n'est pas programmer, et j'ai apris tout seul, donc, je ne connait pas vraiment tout les therme exact!
:)
Mais bon, je ne suis pas tres mauvais, et si je peut donner un petit coup de main, en vrai, il n'a pas précisé, si il voulait sa palette sur un
picture, ou dans une variable (enfin, je me comprend)!
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 9 mars 2007 à 08:29
Bonjour Schlen,
C'est bien de vouloir donner un "coup de main".
Il est bon de profiter également (toi-même) d'une conversation. Elle permet souvent de corriger ses propres erreurs.
Celle-ci, par exemple. Tu fais tes gris (ton code) ainsi :
gris = int((r + g + b)/3)
Il se trouve que le gris n'est pas composé, de 3 proportions identiques du rouge (r), du vert (g) et du bleu (b), mais de 3 proportions identique du Cyan, du Jaune et du Magenta.
Or, le vert est lui-même composé de Magenta et de Jaune !
En divisant par 3 R + G + B , tu n'as donc pas 3 proportions égales de Cyan, deJaune et de Magenta...
Ce que tu as écrit ne serait vrai que dans le système CYMK et ce serait alors (C+Y+M)/3 qui est différent de (R+G+B)/3
d'où la correction apportée par Casy, à savoir :
<dd>Gris = 0.2125*Rouge + 0.7154*Vert + 0.0721*Bleu</dd>qui tendà se rapprocher des proprortions parfaites du gris