2014-01-13 5 views
0

Как создать красный прямоугольник в консольном приложении, который представляет собой определенное количество пикселей по ширине и высоте.Создание прямоугольника с определенным количеством пикселей по ширине и высоте в консольном приложении с использованием C#

Я нашел способы сделать это, но не так, чтобы я мог решить, сколько пикселей оно находится в ширине и высоте. Если вы можете помочь мне с моей проблемой.

Я пробовал почти все, что появляется на google и somw, что я пробовал myslef.

Я думал об этом, но то не указать количество пикселей, и я не могу изменить количество или:

Console.OutpuEncoding = Encoding.GetEncoding(866); 
Console.Writeline("┌─┐"); 
Console.WriteLine("│1│"); 
Console.WriteLine("└─┘"); 
+1

@ Liath в консольном приложении? Можете ли вы это сделать? –

+0

@MaciejStachowski Очевидно, вы можете манипулировать буфером, который вам нравится, но он больше не похож на консоль http://stackoverflow.com/questions/2754518/how-can-i-write-fast-colored-output-to-console – Gusdor

+0

@Liath Я добавил пример того, что ive попробовал. – user2979104

ответ

1

Хорошо. Я не знаю, будет ли всегда работать следующий код, сбой или съесть вашего первенца, но вот он - рисование прямоугольника в окне консоли, путь C#. Взломан в течение нескольких минут и не оптимален каким-либо образом, но вы можете адаптировать его к вашим потребностям.

namespace ConsoleApplication12 
{ 
class Program 
{ 

    [DllImport("gdi32.dll")] 
    private extern static int SetPixel(int hdc, int x, int y, int color); 

    [DllImport("kernel32.dll")] 
    private extern static int GetConsoleWindow(); 

    [DllImport("user32.dll")] 
    private extern static int GetDC(int i); 

    static void Main(string[] args) 
    { 
     int myCon = GetConsoleWindow(); 
     int myDC = GetDC(myCon); 
     for (int i = 50; i < 150; i++) 
     { 
      for (int j = 50; j < 150; j++) 
      { 
       if (i == 50 || i == 149 || j == 50 || j == 149) 
        SetPixel(myDC, i, j, 255*256*256 + 255*256 + 255); 
      } 
     } 
     Console.ReadLine(); 
    } 
} 
}