Articles > Assembleur > Graphismes > Draw > Comment tracer une droite horizontale ? >

Comment tracer une droite horizontale ?

Dans cette section, vous allez apprendre à dessiner une droite horizontale.

Toute droite peut être définie par les coordonnées des points constituant ses 2 extrémités.

Dans le cas d'une droite horizontale, les coordonnées y des 2 extrémités sont identiques. On peut donc définir une droite horizontale simplement en indiquant les coordonnées x de ses 2 extrémités et une coordonée y.

Pour dessiner une droite horizontale, on commence par dessiner l'extrémité de coordonnée x inférieure. Ensuite, on trace le point situé à droite du précédent. Puis on répéte l'opération précédente jusqu'à arriver sur la seconde extrémité de la droite.

Prototype de la fonction

Code: ASM
  1. drawHorizontale PROTO near C, ddsd:DWORD, x1:DWORD, x2:DWORD, y:DWORD, color:DWORD

Code de la fonction

Code: ASM
  1.  
  2. drawHorizontale PROC near C, ddsd:DWORD, x1:DWORD, x2:DWORD, y:DWORD, color:DWORD
  3. pushad
  4. ; if(!ddsd) return
  5. mov esi,ddsd
  6. and esi,esi
  7. jz fin
  8. ; if(y<0) return
  9. mov eax,y
  10. and eax,eax
  11. js fin
  12. ; if(y>=height) return
  13. mov edx,(drawDesc ptr [esi]).dwHeight
  14. cmp eax,edx
  15. jge fin
  16. ; if(x1>x2) xchg(x1,x2)
  17. mov ebx,x1
  18. mov ecx,x2
  19. cmp ebx,ecx
  20. jng @F
  21. xchg ebx,ecx
  22. @@:
  23. ; if(Xmax<0) return
  24. and ecx,ecx
  25. js fin
  26. ; if(Xmin>=width) return
  27. mov edi,(drawDesc ptr [esi]).dwWidth
  28. cmp ebx,edi
  29. jge fin
  30. ; if(Xmin<0) Xmin=0
  31. and ebx,ebx
  32. jns @F
  33. xor ebx,ebx
  34. @@:
  35. ; if(Xmax>=width) Xmax=width-1
  36. cmp ecx,edi
  37. jl @F
  38. mov ecx,edi
  39. dec ecx
  40. @@:
  41. ; boucle=Xmax-Xmin+1
  42. sub ecx,ebx
  43. inc ecx
  44. ; start=(y*width+Xmin)*4+lpSurface
  45. mul edi
  46. add eax,ebx
  47. shl eax,2
  48. mov esi,(drawDesc ptr [esi]).lpSurface
  49. add esi,eax
  50. ; boucle
  51. mov eax,color
  52. @@:
  53. mov dword ptr [esi],eax
  54. add esi,4
  55. dec ecx
  56. jnz @B
  57. fin:
  58. popad
  59. ret
  60. drawHorizontale ENDP
  61.  

première page page précédente page suivante dernière page

Navigation rapide :

Page Description Dernière mise à jour
Comment tracer une droite horizontale ? Dessiner une droite horizontale en assembleur x86 08 nov 2008 22:05:42

Articles > Assembleur > Graphismes > Draw > Comment tracer une droite horizontale ? >

Auteur Commentaire

Ajouter un commentaire

Vous devez vous identifier pour pouvoir ajouter un commentaire.

première page page précédente page suivante dernière page

Navigation rapide :


Cette page a été générée le 21 mar 2010 03:45:34.
page d'accueil Jeremya's Web Site
jeremya.ironie.org

s'identifier

Nom d'utilisateur :
Mot de passe :

outils

qui est en ligne ?

1 visiteur en ligne