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 fonctiondrawVerticale PROTO near C, ddsd:DWORD, x:DWORD, y1:DWORD, y2:DWORD, color:DWORD Code de la fonctiondrawVerticale 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
Articles > Assembleur > Graphismes > Draw > Comment tracer une droite verticale ? >Cette page a été générée le 14 mai 2008 20:00:25. |
outilsqui est en ligne ?4 visiteurs en ligne
sondage qualité |