2011-03-21 2 views
0

학교 프로젝트 용 ASCII 인터페이스를 만드는 중이지만 조금 문제가 있습니다.C# : 사용자가 수정 한 후 콘솔 색상 팔레트 재설정

Output & properties window for CMD |Screenshot|

나는 원래 눈에 좀 더 쉽게하고 더 심미적으로 만족 나는 그것이 되돌아 오는 것처럼 팔자가 'cmd.exe를 공정한 조금 있지만, 보이는 것을 사용하는 경향이있다해서 할 색상을 수정 나 혼란스러워. 카나리아 노란색 텍스트와 부드러운 짙은 파란색, 괜찮아 보였다. 분명히 Console.ConsoleColor는 cmd.exe 속성 창에서 수정 한 색상의 모든 색상을 사용합니다. 좋지 않다! 나는 왜 두 사람이 분리되어 있는지 보지 못합니다 :/

누구나이 팔레트를 무시할 수있는 방법을 알고 있습니까? 코드에서 RGB를 설정하기를 원하지만, System.Drawing.Color 팔레트에 접근 할 수있는 방법이 있다면 그럴 것입니다. 내가 잘 설명 대답을 대단히 감사하겠습니다 있도록

내가 여기 프로그래밍에서 아주 새로운 해요,하지만 까다로운 아니에요 :

//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); 
     } 
: P

다음은 위의 출력을 생성 한 코드입니다

추신 : 이미지를 포함했을 텐데 stackoverflow.com에 내 처음이다 그래서 나는 아무도 없어 :)

답변

3

이것은 모두 매우 많은 디자인입니다. 콘솔 앱은 16 가지 색상 만 표시 할 수 있습니다. 바로 가기 속성을 사용하면 제어판의 디스플레이 애플릿이 GUI 응용 프로그램의 Windows 테마 색을 변경할 수있게하는 것처럼 사용자가 해당 색을 사용자 지정할 수 있습니다. 사용자의 취향을 무시하는 것은 거의 결코 실수가 아닙니다.

하지만 Vista 및 Win7에서는 SetConsoleScreenBufferEx() API 함수를 pinvoking 할 수 있습니다. 상용구 코드 (C)는 this thread이며, 필요한 정보는 pinvoke.net을 방문하십시오.

+1

PInvoke eh? 좋구나! 새 장난감! 나는 사용자의 선호도를 어떻게 오버라이드하고 싶지는 않을 것이라고 생각했지만이 경우 ASCII 일과 같은 게임을 작업하고 있으며 신뢰할 수있는 색상 집합을 갖는 것이 더 합리적입니다. 함께 일할 수 있습니다. 디자이너가 여러 컴퓨터에서 일관된 환경을 제공 할 수있게하기 위해서입니다. (이것은 내가 어쩌면 내가 어딘가에서 오버라이드를 켜거나 끌 수있는 옵션을 가져야한다고 생각하게 만든다) 나는 이것을 슬퍼 하겠지만, 나는 멍청하다. 고마워요 :) –

관련 문제