begin process at 2010 02 10 07:26:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > COULEUR D'UN PIXEL

COULEUR D'UN PIXEL


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :26/12/2004 Date de mise à jour :31/12/2004 12:06:40 Vu / téléchargé :3 227 / 385

Auteur : BLG

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

 Description

Cliquez pour voir la capture en taille normale
Permet d'obtenir la couleur d'un pixel (dans 2 formats : le TColor Pascal et le RGB, décliné lui même sous 2 formes : décimal et héxadécimal) à l'écran.

Il peut être judicieux de placer un raccourci vers le programme (si l'on en a usage) dans la barre de lancement rapide par exemple.


 Conclusion

Le code est commenté.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 décembre 2004 14:43:36 :
Nouvelle version.
31 décembre 2004 12:06:40 :
Code optimisé grâce aux commentaires de JulioDelphi.

 Sources du même auteur

Source avec Zip Source avec une capture TRANSFORMATIONS BIJECTIVES D'UNE IMAGE : BOULANGER ET PHOTOM...
Source avec Zip Source avec une capture EFFET DE LAMPE TORCHE
Source avec une capture HALO SUR UNE IMAGE
Source avec Zip Source avec une capture ÉDITEUR HEXADÉCIMAL
CARRÉ MAGIQUE

 Sources de la même categorie

Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA par Bacterius
Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture THREAD ET BITMAP (DESSIN AU CRAYON) par barbichette
Source avec Zip Source avec une capture ÉCRAN DE VEILLE FEU D'ARTIFICE par barbichette

Commentaires et avis

Commentaire de grandvizir le 30/12/2004 13:05:08

Ca n'a aucun intérêt. En plus, ça bute dans les coins... L'intérêt aurait été de faire comme WinSpector qui détecte carrément la couleur sans surperposer une espèce de fenêtre qui n'est rien d'autre qu'une copie d'écran. Aucun log des couleurs. Et si le pixel qui t'intéresse est dynamiquement colorisé ??

Mémorise plutôt en mémoire le DC Window et ensuite tu l'analyses avec la fonction Pixels implémentée dans TCanvas. Plus de fenêtres dès lors... Et ça peut alors devenir utile. Dans ce cas, le panel est assimilé à la TForm.

Commentaire de BLG le 30/12/2004 14:48:02

Oui, je n'avais pas pensé aux pixels "dynamiquement colorisés"...
Ce problème est réglé dans la nouvelle version. Et la fenêtre ne risque plus de "buter dans les coins" puisque l'utilisateur la place désormais où il veut.

Commentaire de JulioDelphi le 30/12/2004 19:17:05 administrateur CS

hum ... euh juste a la vue du code, disons ke mon bureau est sans icones, fond noir, je lance ton appli, je laisse ma souris au milieu il me dira donc "rgb : 0,0,0 et html (disons plutot hexa) #000000), maintenant j'ouvre un explorateur (fond blanc) et je mets ma souris dedans, il me dira blanc ? ou noir ? (255,255,255 ou 0,0,0) ? selon le code je dit noir ! il n'y a pas de refresh du canvas gardé en mémoire :/

j'ai fais un "ColorPikker" que je vais deposer sur mon site, peut etre ici, mais je vais me faire changler car j'utilise des composants "pas de basse" et meme un hookclavier :p pis aussi une icone en systray etc :p

allez j'en fais un screen et une description :
- alt+x : montre/cache le colorpikker
- alt+w : fais suivre ou non le colorpikker derriere la souris (sans buter :o)
- alt+q : fait une "pause" sur la detection de couleur
- ctrl (enfoncé) : la couleur de l'icone dans le systray et son hint changent (selon la couleur bien sur :p)
- une loupe est affichée (avec zoom reglable) pour mieux viser :)
- couleurs visible en RGB et HEXA
- fenetre skinnée
- a chaque pause ou ctrl laché ou fenetre cachée, la derniere couleur vue est gardée en historique.
- l'historique est disponible ds le menu contextuel (clic droit) sur l'icone du systray
- le zoom, la couleur de l'icone du systray et l'historique sont sauvegardés entre les lancements du programme

prévu :
- fenetre de configuration des touches de raccourcis
- skinnable
- divers options

voila :D ça vous dit ? j'utilise aussi des composants jedi et une dll pour le hook lol, ça vous dit qd meme ? l'exe ? ha ok :p
screen : [img]http://diabloporc.free.fr/delphi/demos/colorpikker.jpg[/img]


c pour bientot :)))

Commentaire de BLG le 30/12/2004 20:38:16

Vous nous proposez une petite expérience dans les 5 premières lignes de votre message, et bien soit, essayez vous-même, et vous verrez que vous avez simplement eu tord de faire le malin.
Cela dit je ne dispose que de Windows XP et ne peut en conséquence garantir que ce que vous prédisez ne se produise pas sous une autre version de Windows...

Commentaire de JulioDelphi le 30/12/2004 21:01:21 administrateur CS

???????
"faire la malin" ? abusé ! je me demandais si ça le ferais, n'ayant pas la possibilité de le tester sous delphi ici (au taf)
donc euh explique moi comment ça se fait car je ne vois pas de refresh du canvas !
tu te sens agressé ?? c pas mon but ! au contraire ... je trouves tes sources superbe (moins celle ci :p) :)
allez explike moi , moi ki n'ai pas compris comment ça marche sans le refresh :p
merciiiii

Commentaire de JulioDelphi le 31/12/2004 11:33:30 administrateur CS

re moi :)
bon j'ai compris apres m'etre plongé dedans, merci le handle :D
euh le rect0 ne sert a rien je pense, ni meme coult et coulh, regarde :

  coul := CanvasB.Pixels[Mouse.CursorPos.X,Mouse.CursorPos.Y];
  Shape1.Brush.Color := coul;
  Label1.Caption := 'TColor : ' + ColorToString(coul);
  Label2.Caption := 'RGB : ' + IntToStr(GetRValue(coul)) + ',' + IntToStr(GetGValue(coul)) + ',' + IntToStr(GetBValue(coul));
  Label3.Caption := 'HTML : #' + IntToHex(GetRValue(coul),2) + IntToHex(GetGValue(coul),2) + IntToHex(GetBValue(coul),2);

suffit :) et puis comme ça, lors d'un passage sur une couleur "pure" cimme le rouge, bleu, blanc, noir, le TColot affiche "clRed" "clBlue" etc :) beau non ?

9/10 pour ce code tres efficace et tres court (surtout avec coulh et coult en moins :D)

Commentaire de BLG le 31/12/2004 12:03:15

Et oui, ce n'est qu'une affaire de handle ;-) (on pourrait penser de prime abord que le code fait une "copie" du canvas à un instant donné alors qu'en réalité il récupère vraiment le canvas puisqu'il lui attribue son handle).
En effet, j'ai oublié de virer "rect0" :-/ (qui servait dans la première version du code).
Bien vu pour la fonction ColorToString (je ne connaissais pas) ;-). De plus "coult" ne servait effectivement à rien, même avant l'utilisation de ColorToString (j'avais fait ce code quand je débutais en Delphi [NB : je suis toujours débutant, mais un peu moins :-D], et en le relisant avant de le poster ici je n'ai pas fais gaffe :-/ ).
Enfin, le code fonctionne parfaitement sans "coulh", mais cette fois je n'ai pas compris pourquoi (à quoi sert dès lors la fonction ColorToRGB ?)...
En tout cas merci beaucoup pour cette intervention et désolé de t'avoir paru agressif ;-).

Commentaire de JulioDelphi le 31/12/2004 18:27:10 administrateur CS

hop ! remoi je viens faire le malin avec ma source :
http://www.delphifr.com/code.aspx?ID=28537
hop hop avec ça tu pourras refaire ton appli avec 0 ligne de code :) j'ai repris ton efficace courte fonction !
merci a toi :D

Commentaire de BLG le 31/12/2004 19:04:00

On n'arrête pas le progrès :-D !

Commentaire de arckhenstone le 31/03/2009 09:45:23

pourrais tu m'aider ?
Voici mon code, mais mon tramage ressort en noir et rouge au lieux de nori et blanc et j'ai de nombreuses imperfection dans l'image... plein de petit pixel rouge ( qui devraient être blanc) apparaissent autour de mon image...
Merci d'avance.

procedure TForm1.BiChromieClick(Sender: TObject);
Const
seuil=128;
Var
x,y:word;
begin

  for x:=0 to image1.picture.width do
  begin

      for y:=0 to image1.picture.Height do
      begin
          if image1.Picture.Bitmap.Canvas.Pixels [x,y]>seuil then
          image1.Picture.Bitmap.Canvas.Pixels [x,y]:=255 else image1.Picture.Bitmap.Canvas.Pixels [x,y]:=0;
          memo1.Clear;
      end;
  end;
end;

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,374 sec (4)

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