cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 2006
-
3 mai 2002 à 17:07
cs_Gysmo
Messages postés209Date d'inscriptionlundi 11 février 2002StatutMembreDernière intervention13 décembre 2002
-
3 mai 2002 à 20:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Gysmo
Messages postés209Date d'inscriptionlundi 11 février 2002StatutMembreDernière intervention13 décembre 2002 3 mai 2002 à 20:47
Super cool ce source! Chapeau!
Babaille!
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 3 mai 2002 à 18:49
Mono40 c'est pour faire connaitre case aux débutants et leur faire compredre que dans 99,8% des cas case est + vite que if (meme ici essaye tu verras) tu peux aussi désassembler un if et un case en asm aussi tu veras que ca change
DelphiCool
Messages postés455Date d'inscriptionmardi 24 juillet 2001StatutMembreDernière intervention10 mars 2009 3 mai 2002 à 17:58
Tres sympa ton source,
bravo
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 3 mai 2002 à 17:07
OK.
J'ai une question : pourquoi dis-tu que Case est plus rapide que If ?
Dans le cas de comparaison en série c'est vrai ( surtout si on met les valeurs par ordre croissant ), mais dans le cas d'une seule ?
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 3 mai 2002 à 16:53
bein vi et j'ai encore + vite avec bitblt mono, mais le but cetais de faire un didacticiel donc compréhensible pour tous
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 3 mai 2002 à 16:48
Hééé, ça donne du style !
Dommage que GetPixel et SetPixel soient aussi lents...
Il est possible d'accélérer beaucoup le dessin en Utilisant TBitMap.ScanLine :
Il faut créer les bitmap en 24bits :
BmpOut.PixelFormat:=pf24Bit;
Puis utiliser les fonctions suivantes :
Function MonGetPixel(BitMap:TBitMap;i,j:Integer):TColor;
Var p:PByteArray;
Begin
P:=BitMap.ScanLine[j];
Asm
MOV EDX,P
ADD EDX,i
ADD EDX,i
ADD EDX,i
XOR EAX,EAX
MOV AL,[EDX]
SHL EAX,8
MOV AL,[EDX+1]
SHL EAX,8
MOV AL,[EDX+2]
MOV RESULT,EAX
End;
End;
.....
case Mongetpixel(BmpTxt,tx,ty) of
0:MonSetPixel(BmpOut,Tx+x,Ty+y+round(c),couleur);
end;
.....
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 3 mai 2002 à 14:59
Merci Mono40, comme mes res etc sont pas dans le meme rep que mes .pas j'avais d'abord mis mon .pas puis ajouter le reste a l'archive, et hop un bug du soft d'archvage que j'utilse est venu se glisser. resultat le pas n'etais pas répertorié dans l'archive mais c'est corrigé.
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 3 mai 2002 à 13:54
Le titre semble sympas, mais il manque le .PAS dans le source... ManChesTer si tu pouvais mettre ton source à jour STP. Merci
3 mai 2002 à 20:47
Babaille!
3 mai 2002 à 18:49
3 mai 2002 à 17:58
bravo
3 mai 2002 à 17:07
J'ai une question : pourquoi dis-tu que Case est plus rapide que If ?
Dans le cas de comparaison en série c'est vrai ( surtout si on met les valeurs par ordre croissant ), mais dans le cas d'une seule ?
3 mai 2002 à 16:53
3 mai 2002 à 16:48
Dommage que GetPixel et SetPixel soient aussi lents...
Il est possible d'accélérer beaucoup le dessin en Utilisant TBitMap.ScanLine :
Il faut créer les bitmap en 24bits :
BmpOut.PixelFormat:=pf24Bit;
Puis utiliser les fonctions suivantes :
Function MonGetPixel(BitMap:TBitMap;i,j:Integer):TColor;
Var p:PByteArray;
Begin
P:=BitMap.ScanLine[j];
Asm
MOV EDX,P
ADD EDX,i
ADD EDX,i
ADD EDX,i
XOR EAX,EAX
MOV AL,[EDX]
SHL EAX,8
MOV AL,[EDX+1]
SHL EAX,8
MOV AL,[EDX+2]
MOV RESULT,EAX
End;
End;
Procedure MonSetPixel(BitMap:TBitMap;i,j:Integer;Couleur:TColor);
Var p:PByteArray;
Begin
P:=BitMap.ScanLine[j];
Asm
MOV EDX,P
ADD EDX,i
ADD EDX,i
ADD EDX,i
MOV EAX,Couleur
MOV [EDX+2],AL
SHR EAX,8
MOV [EDX+1],AL
SHR EAX,8
MOV [EDX],AL
End;
End;
.....
case Mongetpixel(BmpTxt,tx,ty) of
0:MonSetPixel(BmpOut,Tx+x,Ty+y+round(c),couleur);
end;
.....
3 mai 2002 à 14:59
3 mai 2002 à 13:54