DU TEXTE EN SINUSOIDE POINT PAR POINT

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 3 mai 2002 à 17:07
cs_Gysmo Messages postés 209 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 13 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.

https://codes-sources.commentcamarche.net/source/11898-du-texte-en-sinusoide-point-par-point

cs_Gysmo Messages postés 209 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 13 décembre 2002
3 mai 2002 à 20:47
Super cool ce source! Chapeau!

Babaille!
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 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és 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
3 mai 2002 à 17:58
Tres sympa ton source,
bravo
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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és 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 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és 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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;

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;
.....
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 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és 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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
Rejoignez-nous