2011-09-24 7 views
0

이 포럼에서 검색 한 결과 다음과 관련하여 도움이되는 내용을 찾지 못했습니다. 가능한 경우 도와주세요. 고맙습니다.C# - 창 배경색 다시 그리는 방법

나는 창 배경을 검은 색 (또는 내가 좋아하는 다른 색)으로 설정했다. 앱에 의해 계산 된 결과의 일부로, 그 창에서 색깔이 다른 영역을 그려 봅니다. 영역의 색상이 동적이며 색 변경 전에 영역의 시작 색을 찾고 저장하여 해당 기본 색으로 되돌릴 수 있습니다. 예를 들어, 시작 배경색이 검은 색이고 앱이 색상을 녹색으로 변경하면 기본 색상이 검은 색이라는 것을 기억하지 않고 필요할 때 색상을 기본 색상 인 검정색으로 되돌리고 싶습니다.

는 나중에

BackColor = backgroundColor; 

이 작업을 수행하지만, 색상이 흰색이 아닌 내 환경 설정에 지정된했던 검은 색으로 돌아갑니다에 다음

private Color backgroundColor = (Color)System.Drawing.SystemColors.Window; 

과를 사용했습니다.

누구든지 해결책을 제안 할 수 있습니까? 당신이 제공 할 수있는 도움이되어 주셔서 대단히 감사합니다.

답변

2

예, SystemColors.Window는 기본적으로 흰색입니다. 당신은 아마이 원하는 :

private Color backgroundColor; 

private void startPlotting() 
{ 
    backgroundColor = BackColor; 
    BackColor = Color.Black; 
    // etc.. 
} 

private void restoreWindow() 
{ 
    BackColor = backgroundColor; 
} 
+0

당신은 정확합니다. 나는 시도했다 Color backgroundColor = BackColor; 하지만 난 오류가 발생 : 개체 참조가 아닌 정적 필드, 메서드 또는 속성이 필요하고 그것을 해결하는 방법을 잘 모르겠습니다. – Zeos6

+0

그래서 나는 그것을 정적 메서드가 아닌 인스턴스 메서드로 작성했습니다. –

+0

나는 본다. 내 문제는이 속성이 사용자가 속성을 통해 배경을 설정할 수있는 더 큰 응용 프로그램의 일부라는 것입니다. 그래서 모든 자식 창에 대한 배경은 속성을 통해 설정되며이를 검색하여 저장하므로 메서드가 필요없이 필요에 따라 되돌릴 수 있습니다. 이런 식으로 할 수있는 방법이 있습니까? 배경색은 어딘가에서 촬영해야하므로 검색 할 수 있어야합니다. 아니면 내가 틀렸어? – Zeos6

0
Color.FromArgb(System.Drawing.SystemColors.WindowFrame.ToArgb()); 
관련 문제