cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 2006
-
30 déc. 2004 à 13:05
arckhenstone
Messages postés19Date d'inscriptionlundi 30 mars 2009StatutMembreDernière intervention29 juillet 2009
-
31 mars 2009 à 09:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
arckhenstone
Messages postés19Date d'inscriptionlundi 30 mars 2009StatutMembreDernière intervention29 juillet 2009 31 mars 2009 à 09:45
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;
cs_BLG
Messages postés16Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention29 décembre 2004 31 déc. 2004 à 19:04
On n'arrête pas le progrès :-D !
cs_BLG
Messages postés16Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention29 décembre 2004 31 déc. 2004 à 12:03
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 ;-).
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 31 déc. 2004 à 11:33
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 :
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)
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 30 déc. 2004 à 21:01
???????
"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
cs_BLG
Messages postés16Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention29 décembre 2004 30 déc. 2004 à 20:38
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...
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 30 déc. 2004 à 19:17
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 :
c pour bientot :)))
cs_BLG
Messages postés16Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention29 décembre 2004 30 déc. 2004 à 14:48
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.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 30 déc. 2004 à 13:05
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.
31 mars 2009 à 09:45
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;
31 déc. 2004 à 19:04
31 déc. 2004 à 12:03
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 ;-).
31 déc. 2004 à 11:33
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)
30 déc. 2004 à 21:01
"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
30 déc. 2004 à 20:38
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...
30 déc. 2004 à 19:17
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 :
c pour bientot :)))
30 déc. 2004 à 14:48
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.
30 déc. 2004 à 13:05
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.