vb.net에서 빨간색 (값 0)에서 녹색 (값 100)으로 색상을 반환하는 함수가 필요합니다. 또한 배경색에 따라 글꼴의 색이 흰색 또는 검정색인지 확인하는 방법이 필요합니다.값에 따라 녹색에서 빨간색으로
-4
A
답변
2
선형 보간
나는 한번의 WinForm에 linearly interpolation
둘 사이의 색상을 할 수있는 같은 요구를했다. 나는 OP만이 아니라 다른 사람들에게도 유용 할 거라고 생각하면서 예외를 만들고 이것을 배후에서 공유 할 것이다.
함수 범위 0.0
(0 %)의 값을 받아 Single
(100 %)1.0
한다.
Public Shared Function Lerp(ByVal color1 As Color, ByVal color2 As Color, ByVal amount As Single) As Color
Const bitmask As Single = 65536.0!
Dim n As UInteger = CUInt(Math.Round(CDbl(Math.Max(Math.Min((amount * bitmask), bitmask), 0.0!))))
Dim r As Integer = (CInt(color1.R) + (((CInt(color2.R) - CInt(color1.R)) * CInt(n)) >> 16))
Dim g As Integer = (CInt(color1.G) + (((CInt(color2.G) - CInt(color1.G)) * CInt(n)) >> 16))
Dim b As Integer = (CInt(color1.B) + (((CInt(color2.B) - CInt(color1.B)) * CInt(n)) >> 16))
Dim a As Integer = (CInt(color1.A) + (((CInt(color2.A) - CInt(color1.A)) * CInt(n)) >> 16))
Return Color.FromArgb(a, r, g, b)
End Function
따라서 귀하의 경우는 다음과 같이 표시됩니다
Dim value As Integer = 'A value in the range 0 - 100
Dim newColor As Color = Lerp(Color.Red, Color.Green, If((value > 0I), (Math.Min(Math.Max(CSng(value), 0.0!), 100.0!)/100.0!), 0.0!))
광도
를 부분 에 대해서는 "흰색 또는 검은 색을 배경에 따라" 당신이 알아야 할 색상의 광도. 다음 함수는 검정의 경우 0을 반환하고 흰색의 경우 240을 반환합니다. 따라서 주어진 배경색의 광도가 <= 120
인 경우 하나의 흰색 시작 색상을 사용해야합니다.
Public Shared Function GetLuminosity(c As Color) As Integer
Return CInt((((Math.Max(Math.Max(CInt(c.R), CInt(c.G)), CInt(c.B)) + Math.Min(Math.Min(CInt(c.R), CInt(c.G)), CInt(c.B))) * 240) + 255)/510I)
End Function
+0
또 다른 방법은,이 방법보다 더 나쁜 것은'Drawing2D.LinearGradientBrush'를 사용하여 그것을 비트 맵으로 변환하고'GetPixel' 메소드를 사용하는 것입니다. 이 기능을 알면이 방법을 사용하는 것은 터무니 없습니다. – Nizam
관련 문제
- 1. 안드로이드 전환 버튼 - 녹색에서 빨간색으로
- 2. 변수 값에 따라 인쇄
- 3. 인수 값에 따라 계기
- 4. 값에 따라 memcached 무효화
- 5. 값에 따라 jquery.animate가 변경됩니다.
- 6. 값에 따라 배열 정렬
- 7. 셀 값에 따라 루핑
- 8. 값에 따라 색상이 바뀝니다.
- 9. 값에 따라 열을 병합
- 10. 값에 따라 페이지의 주소가
- 11. 데이터베이스 값에 따라 행 색상 변경
- 12. 값에 따라 Silverlight4에서 Textblock의 ForeColor를 변경합니다.
- 13. Tablesorter, 색상은 특정 값에 따라 달라집니다.
- 14. 값에 따라 CSS 항목 스타일 지정
- 15. 인접 셀 값에 따라 (엑셀) 조건부 서식
- 16. 데이터 값에 따라 표의 항목 색상 변경
- 17. 변수 값에 따라 함수 실행 -
- 18. 변수 값에 따라 Htaccess가 리디렉션됩니다.
- 19. 확인란의 값에 따라 열을 업데이트하십시오.
- 20. 데이터베이스의 값에 따라 확인란을 선택하십시오.
- 21. 값에 따라 DataFrame의 행을 바꿉니다.
- 22. WPF : 값에 따라 DataTemples을 변경하십시오.
- 23. 배열 값에 따라 행 선택
- 24. 데이터베이스의 값에 따라 확인란을 선택하십시오.
- 25. 값에 따라 테이블 행 숨기기
- 26. 값에 따라 CSV 파일을 구분하십시오.
- 27. 필드 값에 따라 조건부 조인?
- 28. 값에 따라 표 행 숨기기
- 29. 값에 따라 동적으로 fadeIn html
- 30. DataTrigger AttachedProperty 값에 따라 변경
당신은 지금까지 해 온 것을 보여줍니다. 이것은 코드 팩토리가 아닙니다. 그렇게 말하면서, 당신이 찾고있는 것은'XNA' [Color.Lerp] (http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.color)와 같은 것입니다. lerp (v = xnagamestudio.31) .aspx) 방법. –