2011-09-21 5 views
2

TextBox에는 색을 배경색으로, 배경색을 텍스트에 표시합니다. 텍스트 색상을 Black으로 설정했습니다.컨트롤의 배경색에 따라 컨트롤의 텍스트 색을 변경하십시오.

사용자가 색을 으로 설정하면 색상 코드를 읽을 수 없게됩니다. 사용자가 색상을 선택할 때 읽을 수 있도록 텍스트 색상을 프로그래밍 방식으로 설정하려면 어떻게해야합니까?

+1

가 [이 문서] (http://www.splitbrain.org/blog/2008-09/18-calculating_color_contrast_with_php) 및 게시 된 예를 확인하십시오. 그것은 PHP에서하지만 개념은 매우 쉽게 C#으로 전송할 수 있습니다. –

+1

http://stackoverflow.com/questions/1165107/how-do-i-invert-a-colour/1165145#1165145 –

답변

5

당신은 텍스트에 대한 부정적인 색상을 사용할 수 있습니다

Color InvertColor(Color sourceColor) { 
    return Color.FromArgb(255 - sourceColor.R, 
          255 - sourceColor.G, 
          255 - sourceColor.B); 
} 

모든 색상이 너무 거기에, 어느 정도 읽을 수있는 부정적인 색상에 보장되어 당신은 간다. 이것은 색상을 뒤집는 빠르고 더러운 방법이며,이 질문에 대한 답을 확인할 수도 있습니다. How do I invert a color?

또 다른 옵션은 검은 색 텍스트에 흰색 후광을 추가하는 것입니다. 사람들이 GIS 응용 프로그램에서지도 레이블을 모든 표면 위에 읽을 수 있도록하기 위해이 작업을 수행합니다. 후광 효과에 대한 아이디어는 검정 텍스트 주위에 얇은 흰색 경계선을 갖는 것입니다. 이렇게하면 텍스트가 흰색 배경 (테두리가 보이지 않게 됨) 또는 검정색 배경 (테두리가 텍스트 윤곽선)에 상관없이 텍스트를 읽을 수 있습니다.

this article 또는 this SO question (VB.NET 샘플 포함)과 같은 주제에 대한 자습서가 여러 개 있습니다. 당신이 Color가 골라있을 때

, 그냥 이런 식으로 당신의 텍스트 상자의 ForeColor 속성에 할당 : 회색 색상 작동하지

txtColor.ForeColor = mycolor; 
+0

위대한, 나는 같은 솔루션을 게시하려고했고, 당신은 그것을 했어 .... 멋지다, upvote fromme – Sandy

+0

@ user815600 : 감사합니다! – Dyppl

0

.

이 코드는 더 사용할 수 :

lblCarColor.BackColor = color; 
if ((color.B + color.R + color.G)/3 <= 128) 
{ 
    lblCarColor.ForeColor = Color.White; 
} 
관련 문제