在控制台

时间:2017-03-17 01:04:18

标签: c#

我通过下面的代码向控制台绘制矩形,我找不到向左,向右,向上,向下移动它的方法(当我用不同的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();
        }

1 个答案:

答案 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();
}