cs_bgK
Messages postés131Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention19 janvier 2004
-
3 janv. 2003 à 11:40
cs_Comfort
Messages postés2Date d'inscriptionjeudi 3 août 2006StatutMembreDernière intervention 3 août 2006
-
3 août 2006 à 18:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Comfort
Messages postés2Date d'inscriptionjeudi 3 août 2006StatutMembreDernière intervention 3 août 2006 3 août 2006 à 18:37
Bravo
ilyes2275
Messages postés1Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention26 janvier 2003 26 janv. 2003 à 15:58
Salut Dalamar,
je bosse sur un prog qui resemble au tien, j'ai inclu quelque fonctionalités que tu n'a pas mis dans le tien, si tu veut on peut travailler a deux sur ce prog, et sortir une bonne mouture sur le net.
Si t'es interessé, envoie moi un mail sur : iox@fr.st
Salut et @+
cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014 6 janv. 2003 à 21:51
Cool :D
cs_Dalamar
Messages postés63Date d'inscriptionsamedi 22 décembre 2001StatutMembreDernière intervention22 décembre 2003 4 janv. 2003 à 04:09
Merci beaucoup DelphiProg!
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 3 janv. 2003 à 22:49
Pour réaliser une loupe sur une partie de l'écran, regardes sur le site de Nono40 (http://nono40.fr.st), rubriques sources.
cs_Dalamar
Messages postés63Date d'inscriptionsamedi 22 décembre 2001StatutMembreDernière intervention22 décembre 2003 3 janv. 2003 à 16:39
merci beaucoup pour la suggestion. Je ne savais pas utiliser scanline. Je vais optimiser les autres fonctions aussi...
cs_bgK
Messages postés131Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention19 janvier 2004 3 janv. 2003 à 11:40
Pas mal ton prog !!! Par contre, il manque un peu d'optimisation. Par exemple, pour la fonction invert, il faut utiliser TBitmap.ScanLine, qui est beaucoup plus rapide que GetPixel(x,y). Il est plus long pour le CPU de faire r := 255 - r; que r := not r;, ce qui donne le même résultat. Voici ta fonction un peu optimisée :
procedure invert(buffer:TBitmap);
Type
TRGBTripleArray = array[Word] of TRGBTriple;
PRGBTripleArray = ^TRGBTripleArray;
var color: TRGBTriple;
h,w,a:integer;
begin
for h:=0 to buffer.height - 1 do begin
for w:=0 to buffer.Width - 1 do begin
Move(PRGBTripleArray(buffer.ScanLine[h])^[w],Color,3);
Color.rgbtRed := not Color.rgbtRed;
Color.rgbtGreen := not Color.rgbtGreen;
Color.rgbtBlue := not Color.rgbtBlue;
3 août 2006 à 18:37
26 janv. 2003 à 15:58
je bosse sur un prog qui resemble au tien, j'ai inclu quelque fonctionalités que tu n'a pas mis dans le tien, si tu veut on peut travailler a deux sur ce prog, et sortir une bonne mouture sur le net.
Si t'es interessé, envoie moi un mail sur : iox@fr.st
Salut et @+
6 janv. 2003 à 21:51
4 janv. 2003 à 04:09
3 janv. 2003 à 22:49
3 janv. 2003 à 16:39
3 janv. 2003 à 11:40
procedure invert(buffer:TBitmap);
Type
TRGBTripleArray = array[Word] of TRGBTriple;
PRGBTripleArray = ^TRGBTripleArray;
var color: TRGBTriple;
h,w,a:integer;
begin
for h:=0 to buffer.height - 1 do begin
for w:=0 to buffer.Width - 1 do begin
Move(PRGBTripleArray(buffer.ScanLine[h])^[w],Color,3);
Color.rgbtRed := not Color.rgbtRed;
Color.rgbtGreen := not Color.rgbtGreen;
Color.rgbtBlue := not Color.rgbtBlue;
Move(Color,PRGBTripleArray(buffer.ScanLine[h])^[w],3);
application.ProcessMessages ;
end;
end;
end;
Avec cette fonction, pour une image en 800x600, sur mon PC, le temps de calcul est passé de 2s à 700ms, ce qui n'est pas rien !!
Il est possible d'utiliser les API InvertRgn ou InvertRect pour faire ça encore plus rapidement, mais ce n'est pas interessant ...