Tout d'abord sachez que je poste ce code à titre d'exemple
Il DESSINE un dégradé comme ceux que l'on peut trouver dans les logiciels de retourche d'images, une partie servant à selectionner la couleur, l'autre à selectionner la luminosité pour cette même couleur
Enfin les valeurs rgb ou html peuvent être copiés
Je rapelle que j'ai posté ce code car la plupart (tous ?) des selecteurs de couleurs sont fait soit a l'aide de scrollbars faisant varier les composantes R,G et B, soit d'image de dégradé
Dernière chose, le dégradé n'est effectué qu'une seule fois, puis il est sauvegardé de manière a ne pas avoir a le redessiner à chaque fois !
Source / Exemple :
alias palette {
window -dopCk0 @palette -1 -1 390 420
window -hp @pbuf
if (!$exists($scriptdirpalette_claire.bmp)) draw_palette claire
else { drawpic @palette 0 0 $+(",$scriptdirpalette_claire.bmp,") | drawcopy @palette 0 0 310 310 @pbuf 0 0 }
lumdeg 255 | draw_infos 1 1 | fleche 1
}
alias draw_palette {
var %f $+(",$scriptdirpalette,_,$1,.bmp,")
if ($exists(%f)) drawpic @palette 0 0 %f
else {
var %x 1 , %r 255 , %g 0 , %b 0 , %ticks $ticks
wait
while (%x < 310) {
var %y 1
while (%y < 310) {
if ($1 == claire) drawdot -rn @palette $rgb($calc($l(%r) + (((255 - %r) / 310) * %y)),$calc($l(%g) + (((255 - %g) / 310) * %y)),$calc($l(%b) + (((255 - %b) / 310) * %y))) 1 %x %y
else {
var %c $calc(%y * 255 / 310)
drawdot -rn @palette $rgb($l($calc(%r - %c)),$l($calc(%g - %c)),$l($calc(%b - %c))) 1 %x %y
}
inc %y
}
if (%r >= 255) && (!%b) && (%g < 255) inc %g 5
elseif (%g <= 255) && (%r > 0) && (!%b) dec %r 5
elseif (%r <= 0) && (%g >= 255) && (%b < 256) inc %b 5
elseif (%b >= 255) && (%r <= 0) && (%g > 0) dec %g 5
elseif (%g <= 0) && (%b > 254) && (%r < 255) inc %r 5
elseif (%r >= 255) && (%g <= 0) dec %b 5
inc %x
}
drawdot @palette
drawsave @palette %f
wait
echo -a Palette $1 dessinée en $duration($calc(($ticks - %ticks) / 1000)))
}
lumdeg 255 | draw_infos 1 1 | fleche 1
drawcopy @palette 0 0 310 310 @pbuf 0 0
}
alias -l lumdeg {
tokenize 44 $rgb($1)
var %i 1 | while (%i < 310) {
if ($getdot(@palette,1,309) > 50000) drawrect -frn @palette $rgb($l($calc($1 - (($1 / 310) * %i))),$l($calc($2 - (($2 / 310) * %i))),$l($calc($3 - (($3 / 310) * %i)))) 1 340 %i 20 1
else drawrect -frn @palette $rgb($l($calc($1 + (((255 - $1) / 310) * %i))),$l($calc($2 + (((255 - $2) / 310) * %i))),$l($calc($3 + (((255 - $3) / 310) * %i)))) 1 340 %i 20 1
inc %i
}
drawdot @palette
}
menu @palette {
sclick {
if ($inrect($mouse.x,$mouse.y,1,1,309,309)) {
drawcopy @pbuf 0 0 310 310 @palette 0 0 310 310
draw_infos $mouse.x $mouse.y | fleche 1
lumdeg $getdot(@palette,$mouse.x,$mouse.y)
drawrect -e @palette $iif($getdot(@palette,1,309) > 50000,1,0) 2 $calc($mouse.x - 6) $calc($mouse.y - 6) 11 11
}
elseif ($inrect($mouse.x,$mouse.y,340,1,20,309)) { fleche $mouse.y | draw_infos $mouse.x $mouse.y }
}
Degradé sombre:draw_palette sombre
Dégradé clair:draw_palette claire
-
Copier
.code RGB:clipboard $rgb($getdot(@palette,2,340))
.code HTML:clipboard $html($rgb($getdot(@palette,2,340)))
}
alias -l draw_infos {
drawrect -rf @palette $getdot(@palette,$1,$2) 1 1 320 120 60
drawrect -f @palette 0 1 140 315 200 60
drawtext -b @palette 1 0 arial 13 140 330 RGB: $rgb($getdot(@palette,$1,$2))
drawtext -b @palette 1 0 arial 13 140 350 HTML: $html($rgb($getdot(@palette,$1,$2)))
}
alias -l html { tokenize 44 $1 | return $+($chr(35),$base($1,10,16,2),$base($2,10,16,2),$base($3,10,16,2)) }
alias -l fleche {
drawrect -f @palette 0 1 330 1 10 320 360 1 10 320
drawtext @palette 1 wingdings 10 330 $1 è | drawtext @palette 1 wingdings 10 359 $1 ç
}
alias -l wait {
if (!$window(@wait)) { window -pod @wait -1 -1 200 80 | drawtext @wait 1 arial 14 30 15 DESSIN EN COURS... }
else close -@ @wait
}
alias -l l return $iif($1 < 0,0,$iif($1 > 255,255,$1))
on *:close:@palette:window -c @pbuf
Conclusion :
/palette pour l'utiliser
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.