1

我想创建一个程序,输出 4 个看起来像 Windows 徽标的正方形。到目前为止,我已经设法创建了 2 个如下所示的正方形:

[ ]

[ ]

我先做了2个垂直方块。那么如何添加另外 2 个垂直方块来完成 Windows 徽标呢?

[ ] [ ]

[ ] [ ]

这是我的代码:

        Console.BackgroundColor = ConsoleColor.DarkCyan;
        Console.Clear();
        int size = 10;
        Console.WriteLine();
        for (int row = 3; row <= size; row++)
        {
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            Console.WriteLine();
        }
        Console.WriteLine();
        for (int row = 3; row <= size; row++)
        {
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            Console.WriteLine();
        }
        Console.ReadKey();
4

3 回答 3

1

在第一步中编写一个辅助方法来绘制一些东西:

public static class Draw
{
    public static void Rectangle(int top, int left, int width, int height, ConsoleColor color)
    {
        if (width < 0)
            throw new ArgumentException("width must be greater or equal zero.", "width");

        if (height < 0)
            throw new ArgumentException("height must be greater or equal zero.", "height");

        var oldPositionLeft = Console.CursorLeft;
        var oldPositionTop = Console.CursorTop;
        var oldColor = Console.BackgroundColor;

        Console.BackgroundColor = color;

        for (int i = 0; i < height; i++)
        {
            Console.SetCursorPosition(left, top + i);
            Console.Write(new String(' ', width));
        }

        Console.SetCursorPosition(oldPositionLeft, oldPositionTop);
        Console.BackgroundColor = oldColor;
    }

然后定义您要绘制的项目:

var items = new[] 
{ 
    new 
    { 
        Color = ConsoleColor.DarkCyan,
        Top = 1,
        Left = 1,
        Size = 5
    },
    new 
    { 
        Color = ConsoleColor.DarkGreen,
        Top = 1,
        Left = 7,
        Size = 5
    },
    new 
    { 
        Color = ConsoleColor.DarkRed,
        Top = 7,
        Left = 1,
        Size = 5
    },
    new 
    { 
        Color = ConsoleColor.DarkYellow,
        Top = 7,
        Left = 7,
        Size = 5
    },
};

然后简单地遍历元素并绘制它们:

foreach (var item in items)
{
    Draw.Rectangle(item.Top, item.Left, item.Size, item.Size, item.Color);
}
于 2012-10-24T12:29:08.170 回答
0

这是您的代码(您应该在其上进行大量工作)已更改,因此它应该绘制您想要的内容。我建议稍微重构一下。请注意,在绘制第一个矩形(在大小的中间)之后,您应该将大小至少增加一倍并写入一次 DarkCyan。检查代码:

            Console.BackgroundColor = ConsoleColor.DarkCyan;
            Console.Clear();
            int size = 20;
            Console.WriteLine();
            for (int row = 3; row <= size/2; row++)
            {
                for (int col = 0; col <= size + 1; col++)
                {
                    if (col == 0 || col == size/2 +1)
                    {
                        Console.BackgroundColor = ConsoleColor.DarkCyan;
                        Console.Write(" ");
                        Console.ResetColor();
                    }
                    else
                    {
                        Console.BackgroundColor = ConsoleColor.White;
                        Console.Write(" ");
                        Console.ResetColor();
                    }
                }
                Console.WriteLine();
            }
            Console.WriteLine();
            for (int row = 3; row <= size/2; row++)
            {
                for (int col = 0; col <= size + 1; col++)
                {
                    if (col == 0 || col == size / 2 + 1)
                    {
                        Console.BackgroundColor = ConsoleColor.DarkCyan;
                        Console.Write(" ");
                        Console.ResetColor();
                    }
                    else
                    {
                        Console.BackgroundColor = ConsoleColor.White;
                        Console.Write(" ");
                        Console.ResetColor();
                    }
                }
                Console.WriteLine();
            }
            Console.ReadKey();
于 2012-10-24T12:10:00.307 回答
0

尝试这个

Console.BackgroundColor = ConsoleColor.DarkCyan;

        Console.Clear();
        int size = 10;
        Console.WriteLine();
        for (int row = 3; row <= size; row++)
        {
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }

            }
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            Console.WriteLine();
        }
        Console.WriteLine();
        for (int row = 3; row <= size; row++)
        {
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            Console.WriteLine();
        }
       

        Console.ReadKey();
于 2012-10-24T12:10:46.670 回答