我通过下面的代码向控制台绘制矩形,我找不到向左,向右,向上,向下移动它的方法(当我用不同的x调用绘制函数时,y它在移位位置绘制,但是我需要清除旧线条)。 顺便说一下,我在控制台上放了一个以上的矩形,所以我无法清理控制台。
public void dragRectangle(int x, int y, int width,int height) {
string s = "╔";
string space = "";
string temp = "";
for (int i = 0; i < width; i++)
{
space += " ";
s += "═";
}
for (int j = 0; j < x; j++)
temp += " ";
s += "╗" + "\n";
for (int i = 0; i < height; i++)
s += temp + "║" + space + "║" + "\n";
s += temp + "╚";
for (int i = 0; i < width; i++)
s += "═";
s += "╝" + "\n";
Console.ForegroundColor = ConsoleColor.Yellow;
Console.CursorTop = y;
Console.CursorLeft = x;
Console.Write(s);
Console.ResetColor();
}
答案 0 :(得分:0)
提供的代码绘制矩形的方式,使用字符串和空格框将裁剪框左侧和下方的任何内容。换句话说......当盒子重叠时,下面的所有盒子都不会在顶盒子里面或顶盒子的左边看到。这是因为您使用带空格的字符串来绘制矩形。使用字符而不是字符串绘制矩形。下面的代码确实使用字符串来打印顶部和底部。
下面是dragRectangle
方法的修订版,显示了我上面所描述的内容。希望这是你想要的。
public static void dragRectangle(int x, int y, int width, int height) {
Console.ForegroundColor = ConsoleColor.Yellow;
//set top corners
string curCorner = "╔";
Console.SetCursorPosition(x, y);
Console.WriteLine(curCorner);
curCorner = "╗"; ;
Console.SetCursorPosition(x + width + 1, y);
Console.WriteLine(curCorner);
//set bottom corners
curCorner = "╚";
Console.SetCursorPosition(x, y + height);
Console.WriteLine(curCorner);
curCorner = "╝";
Console.SetCursorPosition(x + width + 1, y + height);
Console.WriteLine(curCorner);
// set top/bottom horizontal bar
string horizontalBar = new string('═', width);
Console.SetCursorPosition(x + 1, y);
Console.WriteLine(horizontalBar);
Console.SetCursorPosition(x + 1, y + height);
Console.WriteLine(horizontalBar);
// set left/right vertical bar
string vertBar = "║";
for (int i = 1; i < height; i++) {
Console.SetCursorPosition(x, y + i);
Console.WriteLine(vertBar);
Console.SetCursorPosition(x + width + 1, y + i);
Console.WriteLine(vertBar);
}
Console.ResetColor();
}