2011-03-21 69 views
0

我正在爲學校項目創建ASCII接口,但我遇到了一些問題。C#:在用戶修改後重置控制檯顏色托盤

Output & properties window for CMD |Screenshot|

我最初修改的顏色是有點更容易對眼睛和更美觀,只是因爲我傾向於使用醇」 cmd.exe的公平一點,但看起來像它的回來惹我。柔軟的暗藍色金絲雀黃色文字,看起來沒問題。顯然,Console.ConsoleColor從我在cmd.exe屬性窗口中修改的顏色中獲取所有顏色。不好!我不明白爲什麼這兩個是分開的:/

任何人都知道一種方法來覆蓋此托盤?我希望能夠在代碼中設置RGB,但是如果有一種方法可以訪問System.Drawing.Color托盤,那就是kickass!

我在編程很新在這裏,所以我會很欣賞一個很好的解釋回答,我不挑剔但是:P

下面是創建上面的輸出代碼:

//show a title 
     Console.Title = "Contact Book"; 

     //set up the console window all nice like 
     Console.SetWindowSize(80, 50); 

     Console.SetBufferSize(80, 50); 

     //my attempt to reset the colors :(does not work 
     Console.ResetColor(); 

     Console.BackgroundColor = ConsoleColor.Black; 

     Console.ForegroundColor = ConsoleColor.White; 

     Console.Clear(); 

     //write some stuff... :/ 
     Console.WriteLine("{0} {1}", Console.LargestWindowWidth, Console.LargestWindowHeight); 

     Console.WriteLine("11111111112222222222333333333344444444445555555555666666666667777777777888888888889999999999900000000000"); 

     for (int i = 2; i != 10; i++) 
     { 
      Console.WriteLine("{0}", i); 
     } 

PS:會嵌入圖像,但這是我第一次在stackoverflow.com,所以我沒有代表:)

回答

3

這一切都非常設計。控制檯應用程序只能顯示16種不同的顏色。快捷鍵屬性允許用戶自定義這些顏色,就像控制面板中的「顯示」小程序允許她更改GUI應用程序的Windows主題顏色一樣。覆蓋用戶的偏好幾乎從來都不是錯誤。

但是你可以在Vista和Win7上使用SetConsoleScreenBufferEx()API函數。樣板代碼(C)在this thread,請訪問pinvoke.net獲取您需要的聲明。

+1

PInvoke eh?好的!新玩具! 我沒想到你幾乎不想重寫用戶的偏好,但在這種情況下,我正在像ASCII天的遊戲一樣工作,並且讓一組可靠的顏色更合理能夠合作。只是爲了讓設計人員能夠在多臺計算機上提供一致的體驗。 (這確實讓我想,也許我應該有一個選項來啓用/禁用覆蓋某處) 我會upvote這個,但唉,我只是一個noob。非常感謝 :) – 2011-03-25 04:41:32