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

 
drawVerticale PROTO near C, ddsd:DWORD, x:DWORD, y1:DWORD, y2:DWORD, color:DWORD
 

Code de la fonction

 
drawVerticale PROC near C, ddsd:DWORD, x:DWORD, y1:DWORD, y2:DWORD, color:DWORD 
  pushad
  ; if(!ddsd) return
  mov esi,ddsd
  and esi,esi
  jz fin
  ; if(x<0) return
  mov ebx,x
  and ebx,ebx
  js fin
  ; if(x>=width) return
  mov edi,(drawDesc ptr [esi]).dwWidth
  cmp ebx,edi
  jge fin
  ; if(y1>y2) xchg(y1,y2)
  mov eax,y1
  mov ecx,y2
  cmp eax,ecx
  jng @F
  xchg eax,ecx
  @@:
  ; if(Ymax<0) return
  and ecx,ecx
  js fin
  ; if(Ymin>=height) return
  mov edx,(drawDesc ptr [esi]).dwHeight
  cmp eax,edx
  jge fin
  ; if(Ymin<0) Xmin=0
  and eax,eax
  jns @F
  xor eax,eax
  @@:
  ; if(Ymax>=height) Ymax=height-1
  cmp ecx,edx
  jl @F
  mov ecx,edx
  dec ecx
  @@:
  ; boucle=Ymax-Ymin+1
  sub ecx,eax
  inc ecx
  ; start=(Ymin*width+x)*4+lpSurface
  mul edi
  add eax,ebx
  shl eax,2
  mov esi,(drawDesc ptr [esi]).lpSurface
  add esi,eax
  ; boucle
  mov eax,color
  shl edi,2
  @@:
  mov dword ptr [esi],eax
  add esi,edi
  dec ecx
  jnz @B
  fin:
  popad
  ret
drawVerticale 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 verticale ? dessiner une droite verticale en assembleur x86 24 jan 2008 18:29:40

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


Cette page a été générée le 14 mai 2008 20:00:25.
clipart home livre lecture book JEREMYA
WEBSITE
jeremya.ironie.org

s'identifier

Nom d'utilisateur :
Mot de passe :

outils

qui est en ligne ?

4 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 :