Подскажите пожалуйста,
Цитата:
if (System.Math.Abs(dx) > System.Math.Abs(dy))
{
s = dy/dx;
d = 0;
i = 0;
xnn = xn;
if (xn > xk) { t = xn; xn = xk; xk = t; }
while (xn < xk)
{
xn += raz;
if (dx > 0)
xnn += raz;
else
xnn -= raz;
d += s;
if (System.Math.Abs(d) >= 1)
{
if (d > 0)
d -= 1;
else
d += 1;
yn = yn + raz;
}
if (i%10 == 1 || i%10 == 2 || i%10 == 3 || i%10 == 4 || i%10 == 5)
g.FillRectangle(Brush, xnn, yn, raz, raz);
i++;
}
}
else
{
s = (dx/dy);
d = 0;
i = 0;
ynn = yn;
if (yn > yk) { t = yn; yn = yk; yk = t; }
while (yn < yk)
{
yn += raz;
if (dy > 0)
ynn += raz;
else
ynn -= raz;
d += s;
if (d >= 1)
{
if (d > 0)
d -= 1;
else
d += 1;
xn = xn + raz; }
if (i % 10 == 0 || i % 10 == 1 || i % 10 == 2 || i % 10 == 3 || i % 10 == 4)
g.FillRectangle(Brush, xn, ynn, raz, raz);
i++;
}
}
{
s = dy/dx;
d = 0;
i = 0;
xnn = xn;
if (xn > xk) { t = xn; xn = xk; xk = t; }
while (xn < xk)
{
xn += raz;
if (dx > 0)
xnn += raz;
else
xnn -= raz;
d += s;
if (System.Math.Abs(d) >= 1)
{
if (d > 0)
d -= 1;
else
d += 1;
yn = yn + raz;
}
if (i%10 == 1 || i%10 == 2 || i%10 == 3 || i%10 == 4 || i%10 == 5)
g.FillRectangle(Brush, xnn, yn, raz, raz);
i++;
}
}
else
{
s = (dx/dy);
d = 0;
i = 0;
ynn = yn;
if (yn > yk) { t = yn; yn = yk; yk = t; }
while (yn < yk)
{
yn += raz;
if (dy > 0)
ynn += raz;
else
ynn -= raz;
d += s;
if (d >= 1)
{
if (d > 0)
d -= 1;
else
d += 1;
xn = xn + raz; }
if (i % 10 == 0 || i % 10 == 1 || i % 10 == 2 || i % 10 == 3 || i % 10 == 4)
g.FillRectangle(Brush, xn, ynn, raz, raz);
i++;
}
}
В самом первом IF всё рисуется нормально (при помощи этого кода рисуется 2 линии - диагонали формы), и диагональ слева-сверху-вниз-вправо и другая, а вот когда выполнение переходит в else, тогда линия слева-снизу-вправо-вверх не отрисовывается.