public void DrawCircle(int xc, int yc, int r, PIXEL_TYPE pixel = PIXEL_TYPE.PIXEL_SOLID, COLOR col = COLOR.FG_WHITE) { int x = 0; int y = r; int p = 3 - 2 * r; if (r == 0) { return; } while (y >= x) // only formulate 1/8 of circle { Draw(xc - x, yc - y, pixel, col); //upper left left Draw(xc - y, yc - x, pixel, col); //upper upper left Draw(xc + y, yc - x, pixel, col); //upper upper right Draw(xc + x, yc - y, pixel, col); //upper right right Draw(xc - x, yc + y, pixel, col); //lower left left Draw(xc - y, yc + x, pixel, col); //lower lower left Draw(xc + y, yc + x, pixel, col); //lower lower right Draw(xc + x, yc + y, pixel, col); //lower right right if (p < 0) { p += 4 * x++ + 6; } else { p += 4 * (x++ - y--) + 10; } } }
public virtual void Draw(int x, int y, PIXEL_TYPE pixel = PIXEL_TYPE.PIXEL_SOLID, COLOR col = COLOR.FG_WHITE) { if (x >= 0 && x < m_nScreenWidth && y >= 0 && y < m_nScreenHeight) { m_bufScreen[y * m_nScreenWidth + x].UnicodeChar = (char)pixel; m_bufScreen[y * m_nScreenWidth + x].Attributes = (ushort)col; } }
public void Fill(int x1, int y1, int x2, int y2, PIXEL_TYPE pixel = PIXEL_TYPE.PIXEL_SOLID, COLOR col = COLOR.FG_WHITE) { Clip(x1, y1); Clip(x2, y2); for (int x = x1; x < x2; x++) { for (int y = y1; y < y2; y++) { Draw(x, y, pixel, col); } } }
public void DrawToBuffer(PIXEL_TYPE val, int x, int y) { int index = y * bufferWidth + x; if (index >= buffer.Length || index < 0) { return; } buffer[index].character = (char)val; bufferChanged = true; }
public void DrawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, PIXEL_TYPE pixel = PIXEL_TYPE.PIXEL_SOLID, COLOR col = COLOR.FG_WHITE) { DrawLine(x1, y1, x2, y2, pixel, col); DrawLine(x2, y2, x3, y3, pixel, col); DrawLine(x3, y3, x1, y1, pixel, col); }
public void DrawLine(int x1, int y1, int x2, int y2, PIXEL_TYPE pixel = PIXEL_TYPE.PIXEL_SOLID, COLOR col = COLOR.FG_WHITE) { int x, y, dx, dy, dx1, dy1, px, py, xe, ye, i; dx = x2 - x1; dy = y2 - y1; dx1 = Math.Abs(dx); dy1 = Math.Abs(dy); px = 2 * dy1 - dx1; py = 2 * dx1 - dy1; if (dy1 <= dx1) { if (dx >= 0) { x = x1; y = y1; xe = x2; } else { x = x2; y = y2; xe = x1; } Draw(x, y, pixel, col); for (i = 0; x < xe; i++) { x = x + 1; if (px < 0) { px = px + 2 * dy1; } else { if ((dx < 0 && dy < 0) || (dx > 0 && dy > 0)) { y = y + 1; } else { y = y - 1; } px = px + 2 * (dy1 - dx1); } Draw(x, y, pixel, col); } } else { if (dy >= 0) { x = x1; y = y1; ye = y2; } else { x = x2; y = y2; ye = y1; } Draw(x, y, pixel, col); for (i = 0; y < ye; i++) { y = y + 1; if (py <= 0) { py = py + 2 * dx1; } else { if ((dx < 0 && dy < 0) || (dx > 0 && dy > 0)) { x = x + 1; } else { x = x - 1; } py = py + 2 * (dx1 - dy1); } Draw(x, y, pixel, col); } } }