begin process at 2010 03 22 11:17:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > SELECTEUR DE COULEURS

SELECTEUR DE COULEURS


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :rgb, couleur, selecteur, dégradé Niveau :Débutant Date de création :01/12/2005 Date de mise à jour :02/12/2005 22:18:34 Vu :12 343

Auteur : fjxokt

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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
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


 Historique

02 décembre 2005 22:18:35 :
optimisation

 Sources du même auteur

Source avec Zip Source avec une capture ALGORITHME A*
Source avec Zip Source avec une capture IMAGESHACK UPLOADER V0.1 ALPHA
Source avec Zip Source avec une capture AUTO COMPLÉTION V1
Source avec Zip CREATION DE TABLEAUX ALPHA
Source avec Zip Source avec une capture STEGBMP (STEGANOGRAPHIE)

 Sources de la même categorie

Source avec une capture ALIAS POUR TELECHARGER UNE VIDEO SUR YOUTUBE (MISE A JOUR V1... par WorldDMT
ANTI SAJOIN par Maka57
PERMET DE CHERCHER UN HOST par ACoZz
Source avec Zip SIMULATION D'UNE ROULETTE QUI TOURNE par wims
SELPOS - SELECTION ET POSITION ! par wims

 Sources en rapport avec celle ci

AVOIR UNE LISTE D'UTILISATEUR EN COULEURS SELON LEURS SEXE P... par WorldDMT
Source avec une capture ADD-ON COULEUR & CORRECTEUR DE TEXTE PAR DEVORZ par devorZ
GESTION-COULEURS-SPECIALES@UTILISATION-REGSUBEX par TropNul
Source avec une capture VALEUR RGB par ZeroOo
SYSTEME D'ECRITURE par ScOrPiUs_

Commentaires et avis

Commentaire de Zova le 02/12/2005 14:06:21

Très bien fait, je regrette seulement le temps d'exécution, et aussi dans la fenêtre @wait : rajoute un "s" à dessin ;)

Commentaire de fjxokt le 03/12/2005 11:26:46

Pour la faute d'ortho, tu as du rever puisque j'avais bien écrit 'DESSIN' ;-)
Sinon pour le temps d'execution, c'est vrai que c'est long mais il sera difficile de faire plus rapide (toujours le même probleme puisque je dessine 310^2 pixels en faisant un calcul pour chacun d'entre eux)
Pour info, je met 1min11 pour dessiner la palette claire et 1min04 pour la sombre (j'ai un peu optimisé les calculs avecl'update), mais bon dès qu'elle est déssinée, on est tranquille jusqu'à ce que quelqu'un efface l'image ;-)
Si je pouvais savoir le tps que ça a mis chez ceux qui ont testé...

Commentaire de COOLMAN002 le 03/12/2005 12:49:47

Palette claire dessinée en 55secs

Palette sombre dessinée en 44secs

Commentaire de wims le 03/12/2005 13:24:43

Tu pourrais dessiner la palette avec un on load histoire de gagner du temps

Commentaire de fjxokt le 03/12/2005 13:32:00

oula je suis lent moi :-(
Le problème wims c'est que si (imaginons) , quelqu'un supprime les images, comme le on load ne s'effectue qu'une fois, il y aura un petit problème, et puis ça ne change finalement pas grand chose ;-)

Commentaire de Zova le 04/12/2005 20:02:57

fjxokt justement cette fenêtre d'attente je me suis trompé car je pensai que cette fenêtre d'attente était faite pour tous les dessins effectués sur la pwin alors que c'est juste pour la palette... autant pour moi. Je te souhaite en tout cas une très bonne continuation car j'aime bien ce que tu fait (en général :p)

Commentaire de fjxokt le 07/12/2005 22:50:39

merci ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Couleur en rgb [ par kishkaya ] Est il possible de mettre une couleur definie par des valeur rgb genre $rgb(1,2,5) plutot que 12,0 a un texte ??_Marikou $rgb [ par Fat4L ] Bonjour/bonsoir, j'ai un petit soucis, je m'explique:  Dans mon script personnel je voulais facilité le changement de couleur ("thème") de mon script Couleur RGB [ par scandalz ] Bonjour, je cherche exactement la combine rgb de la couleur violet foncé celle qui correspond à ctrl + K 6, Je voudrai savoir le rgb exact.sccandalz Code couleur [ par l1solent ] on ^1:text:**:#:{ haltdef | var %temp.param = $nick $+ , $+ $chan | if ( $+ $color(background) isin $1-) { echo $chan &lt; $+  $+ $nick(#,$nick).co changer la couleur d'une boite de dialog [ par J4Gu4R ] voila j'essaye depuis plusieurs jours de trouver comment changer la couleur d'une boite de dialog et ce qui est écrit dedansen gro voila mon dialog :t detection [ par DaFtOu ] bonjour je voudrais faire un remote pour detecter quand quelqu'un ecrit avec la meme couleur que la couleur de fond de l'ecritureexemple:[18:26] &lt;J couleurs [ par yo252yo ] Bon j'ai cherché, et même si ca parait con pour vous je suis débutant.Je personalise WQuizz et j'aimerai savoir comment on fait pour mettre de la cou Aide pour un bot irc [ par Ziploc ] J'ai un problème , j'aimerais que mon bot réagisse sur un message en couleur mais j'ensuis incapable , j'ai sa ~~&gt;On *:text:*test*:#:{ /msg $chan s DEMANDE [ par Soprano71 ] bonjour quelqu'n aurai t'il un addons pour mettre le pseudo que je hl d'une couleur differente que la couleur de mon ecriture ?? Dialog [ par Doudis ] Bonjour j'ai rencontrer un petit probleme avec un dialog j'ai mit en couleur le texte du dialog avec mdx mais je voudrais savoir comment le faire pour


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales