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 fonctiondrawHorizontale PROTO near C, ddsd:DWORD, x1:DWORD, x2:DWORD, y:DWORD, color:DWORD Code de la fonctiondrawHorizontale 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
Articles > Assembleur > Graphismes > Draw > Comment tracer une droite horizontale ? >Cette page a été générée le 12 mai 2008 06:37:39. |
outilsqui est en ligne ?6 visiteurs en ligne
sondage qualité |