medelias
Messages postés18Date d'inscriptionmardi 28 octobre 2003StatutMembreDernière intervention12 mars 2006 12 févr. 2006 à 11:13
SAlut à vous tous,
tu peux utiliser cette fonction dans l'evènement OnClick des deux images puis tu passe comme paramètre Img: le nom de l'image clickée
(Sender as TImage) ou directement Image1 ou Image2 et BTAFF1, BTAFF2: tes deux button et pix pour enregistrer les pixels trouvés
j'espère être clair
CHAO
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 11 févr. 2006 à 22:46
Bon ok, j'ai zappé une étape... C'est juste pour dire que ScanLine n'est pas obligatoire pour gagner du temps. La méthode donnée en lien permet de gagner autant en vitesse tout en ne bouffant presque rien en ligne de code.
;)
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 11 févr. 2006 à 20:50
slt grandvizir ,
peux tu m'expliquer le pourquoi de ce lien ici ?
Merci
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 8 févr. 2006 à 20:23
slt,
Est ce que tu pourrais me montrer stp comment tu utiliserais cette procedure parce que la serieux je suis dans le brouillard,
Ca doit etre surement con mais je ne vois vraiment pas comment !
Sinon Merci
Et
Ciao
medelias
Messages postés18Date d'inscriptionmardi 28 octobre 2003StatutMembreDernière intervention12 mars 2006 8 févr. 2006 à 10:19
Salut à vous tous
voilà, t'as demandé s'il y idées sur la fonction je te propose ça:
type
TPixels = array [0..9000000] of Integer;
TForm1 = class(TForm)
BDDI: TOpenPictureDialog;...
...
...
public
{ Déclarations publiques }
procedure OuvImage(Img: TImage; BTAFF1, BTAFF2: TButton; var Pix: TPixels);
...
...
procedure TForm1.OuvImage(Img: TImage;BTAFF1, BTAFF2: TButton; var Pix: TPixels);
var
Scan : TypePRGBArray;
x,y :integer;
mv,mb,mr: Integer;
begin
if ouvrirImg(BDDI,Img)=true then
begin
gauge1.MaxValue:=Img.Picture.Bitmap.Height-1 ;
n:=0;
for y:=0 to Img.Picture.Bitmap.Height-1 do
begin
gauge1.Progress:=y;
Scan := Img.picture.Bitmap.ScanLine[Y];
for x:=0 to Img.Picture.Bitmap.Width-1 do
begin
mR := Scan[X].Rouge;
mV := Scan[X].Vert;
mB := Scan[X].Bleu;
Pix[n]:=RGB(mr,mv,mb);
inc(n);
end;
end;
BTAFF1.Enabled:=true;
if (BTAFF1.Enabled=true) and (BTAFF2.Enabled=true) then Corr.Enabled:=true;
end;
end;
si quelqu'un a une autre idée, on est là pour écouter.
a+
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 2 févr. 2006 à 22:44
Le fait d'utiliser un scanline divise en gros par 10 le temps necessaire par rapport a un acces pixel à pixel.
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 2 févr. 2006 à 21:30
bon laissez vos commentaires,remarques et ameliorations et
je changerais le code s'il y a besoin ...
Ciao
12 févr. 2006 à 11:13
tu peux utiliser cette fonction dans l'evènement OnClick des deux images puis tu passe comme paramètre Img: le nom de l'image clickée
(Sender as TImage) ou directement Image1 ou Image2 et BTAFF1, BTAFF2: tes deux button et pix pour enregistrer les pixels trouvés
j'espère être clair
CHAO
11 févr. 2006 à 22:46
;)
11 févr. 2006 à 20:50
peux tu m'expliquer le pourquoi de ce lien ici ?
Merci
8 févr. 2006 à 20:23
Est ce que tu pourrais me montrer stp comment tu utiliserais cette procedure parce que la serieux je suis dans le brouillard,
Ca doit etre surement con mais je ne vois vraiment pas comment !
Sinon Merci
Et
Ciao
8 févr. 2006 à 10:19
voilà, t'as demandé s'il y idées sur la fonction je te propose ça:
type
TPixels = array [0..9000000] of Integer;
TForm1 = class(TForm)
BDDI: TOpenPictureDialog;...
...
...
public
{ Déclarations publiques }
procedure OuvImage(Img: TImage; BTAFF1, BTAFF2: TButton; var Pix: TPixels);
...
...
procedure TForm1.OuvImage(Img: TImage;BTAFF1, BTAFF2: TButton; var Pix: TPixels);
var
Scan : TypePRGBArray;
x,y :integer;
mv,mb,mr: Integer;
begin
if ouvrirImg(BDDI,Img)=true then
begin
gauge1.MaxValue:=Img.Picture.Bitmap.Height-1 ;
n:=0;
for y:=0 to Img.Picture.Bitmap.Height-1 do
begin
gauge1.Progress:=y;
Scan := Img.picture.Bitmap.ScanLine[Y];
for x:=0 to Img.Picture.Bitmap.Width-1 do
begin
mR := Scan[X].Rouge;
mV := Scan[X].Vert;
mB := Scan[X].Bleu;
Pix[n]:=RGB(mr,mv,mb);
inc(n);
end;
end;
BTAFF1.Enabled:=true;
if (BTAFF1.Enabled=true) and (BTAFF2.Enabled=true) then Corr.Enabled:=true;
end;
end;
si quelqu'un a une autre idée, on est là pour écouter.
a+
2 févr. 2006 à 22:44
2 févr. 2006 à 21:30
je changerais le code s'il y a besoin ...
Ciao