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

Comment tracer une droite verticale ?

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

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

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

Pour dessiner une droite verticale, on commence par dessiner l'extrémité de coordonnée y inférieure. Ensuite, on trace le point situé en-dessous 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.  
  2. drawVerticale PROTO near C, ddsd:DWORD, x:DWORD, y1:DWORD, y2:DWORD, color:DWORD
  3.  

Code de la fonction

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

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

Navigation rapide :

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

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

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 13 mar 2010 02:02:04.
page d'accueil Jeremya's Web Site
jeremya.ironie.org

s'identifier

Nom d'utilisateur :
Mot de passe :

outils

qui est en ligne ?

6 visiteurs en ligne