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

drawHorizontale PROTO near C, ddsd:DWORD, x1:DWORD, x2:DWORD, y:DWORD, color:DWORD

Code de la fonction

 
drawHorizontale PROC near C, ddsd:DWORD, x1:DWORD, x2:DWORD, y:DWORD, color:DWORD 
  pushad
  ; if(!ddsd) return
  mov esi,ddsd
  and esi,esi
  jz fin
  ; if(y<0) return
  mov eax,y
  and eax,eax
  js fin
  ; if(y>=height) return
  mov edx,(drawDesc ptr [esi]).dwHeight
  cmp eax,edx
  jge fin
  ; if(x1>x2) xchg(x1,x2)
  mov ebx,x1
  mov ecx,x2
  cmp ebx,ecx
  jng @F
  xchg ebx,ecx
  @@:
  ; if(Xmax<0) return
  and ecx,ecx
  js fin
  ; if(Xmin>=width) return
  mov edi,(drawDesc ptr [esi]).dwWidth
  cmp ebx,edi
  jge fin
  ; if(Xmin<0) Xmin=0
  and ebx,ebx
  jns @F
  xor ebx,ebx
  @@:
  ; if(Xmax>=width) Xmax=width-1
  cmp ecx,edi
  jl @F
  mov ecx,edi
  dec ecx
  @@:
  ; boucle=Xmax-Xmin+1
  sub ecx,ebx
  inc ecx
  ; start=(y*width+Xmin)*4+lpSurface
  mul edi
  add eax,ebx
  shl eax,2
  mov esi,(drawDesc ptr [esi]).lpSurface
  add esi,eax
  ; boucle
  mov eax,color
  @@:
  mov dword ptr [esi],eax
  add esi,4
  dec ecx
  jnz @B
  fin:
  popad
  ret
drawHorizontale ENDP
 

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 24 jan 2008 18:29:40

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


Cette page a été générée le 12 mai 2008 06:37:39.
clipart home livre lecture book JEREMYA
WEBSITE
jeremya.ironie.org

s'identifier

Nom d'utilisateur :
Mot de passe :

outils

qui est en ligne ?

6 visiteurs en ligne

sondage qualité

1-mauvais - excellent-5
Design :
1 5
Ergonomie :
1 5
Contenu :
1 5
Structure :
1 5
Ensemble :
1 5
1-mauvais - excellent-5
Commentaire :