如何重绘离开屏幕的内容? C#

时间:2015-07-23 16:18:36

标签: c# console

所以我创造了这个'矩形图形'持有字母表。我认为它将保持在可视控制台的顶部。 (比如......当用户输入更多文字时会向下滚动等等。我猜这个术语会是“浮动”标题。?

以下是其代码,以及'字母表的代码'

private static void headerFile()
{
    Console.Clear();
    firstColumn = Console.CursorLeft;
    firstRow = Console.CursorTop;

    int HEADER_HEIGHT = 6;
    int columnNumber = Console.WindowWidth - 1;
    var xcoord = 0;
    var ycoord = 0;

    for (int i = 0; i < columnNumber; i++)
    {
        headerWindow("-", i, 0);
        headerWindow("-", i, HEADER_HEIGHT);
    }

    for (int i = 0; i < HEADER_HEIGHT; i++)
    {
        headerWindow("|", 0, i);
        headerWindow("|", columnNumber, i);

    }
    headerWindow("+", xcoord = 0, ycoord = 0);
    headerWindow("+", xcoord = columnNumber, ycoord = 0);
    headerWindow("+", xcoord = 0, ycoord = 6);
    headerWindow("+", xcoord = columnNumber, ycoord = 6);
}

private static void letterChoices()
{
    string[] alphabetSelection = File.ReadAllLines("alphabet.txt");

    for (int i = 0; i < alphabetSelection.Length; i++)
    {
        //headerWindow("|", 0, 3);

        headerWindow(alphabetSelection[i], i*3+1, 1);
        //Console.Write("\n ");
        Console.SetCursorPosition(0, 7);

    }
    //return;
}

因此可以有一个漂浮的图形&#39;那仍然在控制台窗口的最顶端?或者,是否可以自动重新绘制&#39;当它的顶部移动到可视区域下方时会发生同样的事情吗?

如果我必须重新绘制矩形,是否有办法保存屏幕的状态,清除控制台,然后重新绘制所有进度,就像程序刚刚开始时一样,但是有所有&#39;输入&#39; (例如所选字母等)保留在屏幕上。

这是&#39; hangman&#39;,btw。另外,请尽量不要为我编写代码 - 只要告诉我是否可以完成以及为了做这样的事情我可能需要注意哪些事情。 :)

1 个答案:

答案 0 :(得分:1)

  

AHHH。因此,对于每一个动作,它每次都会重绘。现在,给定   它是一个小程序,你认为它需要多长时间   每个新的重绘?

运行此命令并按Enter键几次。

它表明每次都会重新绘制整个屏幕:

static void Main(string[] args)
{
    while(true)
    {
        Console.Clear();
        Console.WriteLine("Top");
        for (int x = 0; x < Console.WindowWidth; x++)
        {
            for (int y = 1; y < Console.WindowHeight - 1; y++)
            {
                Console.SetCursorPosition(x, y);
                Console.Write("X");
            }
        }
        Console.SetCursorPosition(0, Console.WindowHeight - 1);
        Console.Write("Prompt: ");
        Console.ReadLine();
    }
}

它不是最漂亮的,但这是一个控制台应用。你在期待什么?... =)