Make your own free website on Tripod.com

 

LiNeA De BreSenHaM

 

 

using System;

using System.Drawing;

using System.Windows.Forms;

 

class Pintar:Form

{

            public static void Main()

            {

                        Application.Run(new Pintar());

            }

            public Pintar()

            {

                        Text="PrAcTiCa 1 LiNeaS";

                        BackColor=SystemColors.Window;

                        ForeColor=SystemColors.WindowText;

                        ResizeRedraw=true;

            }

            protected override void OnPaint(PaintEventArgs objeto)

            {

                        Graphics grfx=objeto.Graphics;

                        Pen pen=new Pen(ForeColor);

               int xa=20,ya=20,xb=100,yb=100;

                        int dx,dy,x,y,xEnd,p;

                        dx=Math.Abs(xa-xb);

                        dy=Math.Abs(ya-yb);

                        p=2*dy-dx;

                        if (xa>xb)

                        {

                                   x=xb;

                                   y=yb;

                                   xEnd=xa;

                        }

                        else

                        {

                                   x=xa;

                                   y=ya;

                                   xEnd=xb;

                        }

                        grfx.DrawLine(pen,xa,ya,x,y);

                        while(x<xEnd)

                        {

                                   x=x+1;

                                   if(p<b)

                                               p=p+2*dy;

                                   else

                                   {

                                               y=y+1;

                                               p=p+2*(dy-dx);

                                   }

                                   grfx.DrawLine(pen,xa,ya,x,y);

                        }

            }

 

En este algoritmo se capturan los dos extremos de la línea y se almacena el extremo izquierdo (X0,Y0). Después se traza el primer punto (X0,Y0) y después se calculan los incrementos de X, Y, el doble incremento de Y y la diferencia entre el doble incremento de Y y el doble incremento de X y se obtiene el valor inicial para el parámetro de decisión. A cada X a lo largo de la línea que inicia en k=0 se efectúa una prueba: si Pk<0 el siguiente punto que se debe trazar (Xk+1,Y), si no, el siguiente punto a trazar es (Xk+1,Yk+1) y se repite esta prueba según sea el incremento de X.