如何重绘移出屏幕的内容? C#
How do I redraw something that moves off screen? c#
所以我创建了这个包含字母表的 'rectangular graphic'。我认为它会保留在 'viewable console' 的顶部(比如......当用户输入更多文本时会向下滚动等。我猜这个词会是 'floating' header。 ?
这是它的代码,以及 'alphabet'
的代码
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;
}
那么是否可以在控制台 window 的最顶部保留一个浮动的 'graphic'?或者,当它的顶部移动到可视区域下方时,是否可以自动 're-draw' 相同的东西?
如果我必须重绘矩形,有没有办法保存屏幕状态,清除控制台,然后重绘所有进度,就好像程序重新开始一样,但是所有 'inputs' (例如选择的字母等)保留在屏幕上。
这是 'hangman',顺便说一句。另外,请尽量不要为我编写代码 - 只要让我知道它是否可以完成以及我可能需要查看哪些内容才能做这样的事情。 :)
AHHH. So with every single action, it redraws each time. Now, given
that it's a small program, how long do you think it would take with
each new redraw?
运行 并按几次 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();
}
}
它不是最漂亮的,但这是一个 控制台 应用程序。你期待什么?... =)
所以我创建了这个包含字母表的 'rectangular graphic'。我认为它会保留在 'viewable console' 的顶部(比如......当用户输入更多文本时会向下滚动等。我猜这个词会是 'floating' header。 ?
这是它的代码,以及 'alphabet'
的代码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;
}
那么是否可以在控制台 window 的最顶部保留一个浮动的 'graphic'?或者,当它的顶部移动到可视区域下方时,是否可以自动 're-draw' 相同的东西?
如果我必须重绘矩形,有没有办法保存屏幕状态,清除控制台,然后重绘所有进度,就好像程序重新开始一样,但是所有 'inputs' (例如选择的字母等)保留在屏幕上。
这是 'hangman',顺便说一句。另外,请尽量不要为我编写代码 - 只要让我知道它是否可以完成以及我可能需要查看哪些内容才能做这样的事情。 :)
AHHH. So with every single action, it redraws each time. Now, given that it's a small program, how long do you think it would take with each new redraw?
运行 并按几次 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();
}
}
它不是最漂亮的,但这是一个 控制台 应用程序。你期待什么?... =)