Bitmap/Bresenham's line algorithm: Difference between revisions

Content added Content deleted
(→‎{{header|C sharp|C#}}: adding using statements)
(→‎{{header|C sharp|C#}}: making more like c version to avoid confusion)
Line 618: Line 618:
.Save("line.png", ImageFormat.Png);
.Save("line.png", ImageFormat.Png);
}
}
static Bitmap DrawLine(this Bitmap screen, int x0, int y0, int x1, int y1, Color color)
static Bitmap DrawLine(this Bitmap bitmap, int x0, int y0, int x1, int y1, Color color)
{
{
int dx = Math.Abs(x1 - x0), sx = x0 < x1 ? 1 : -1;
int dx = Math.Abs(x1 - x0), sx = x0 < x1 ? 1 : -1;
int dy = Math.Abs(y1 - y0), sy = y0 < y1 ? 1 : -1;
int dy = Math.Abs(y1 - y0), sy = y0 < y1 ? 1 : -1;
int err = (dx > dy ? dx : -dy) / 2;
int err = (dx > dy ? dx : -dy) / 2, e2;
do {
for(;;) {
screen.SetPixel(x0, y0, color);
bitmap.SetPixel(x0, y0, color);
var e2 = err;
if (x0 == x1 && y0 == y1) break;
e2 = err;
if (e2 > -dx) { err -= dy; x0 += sx; }
if (e2 > -dx) { err -= dy; x0 += sx; }
if (e2 < dy) { err += dx; y0 += sy; }
if (e2 < dy) { err += dx; y0 += sy; }
} while (x0 != x1 || y0 != y1);
}
screen.SetPixel(x1, y1, color);
return bitmap;
return screen;
}
}
}</lang>
}</lang>