ColorUtil.cs
上传用户:szltgg
上传日期:2019-05-16
资源大小:604k
文件大小:2k
源码类别:

Telnet服务器

开发平台:

C#

  1. /*
  2.  * Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3.  * $Id: ColorUtil.cs,v 1.2 2005/04/20 08:45:46 okajima Exp $
  4.  */
  5. using System;
  6. using System.Drawing;
  7. namespace Poderosa.UI
  8. {
  9. public class ColorUtil {
  10. static public Color VSNetBackgroundColor {
  11. get {
  12. return CalculateColor(SystemColors.Window, SystemColors.Control, 220);
  13. }
  14. }
  15. static public Color VSNetSelectionColor {
  16. get {
  17. return CalculateColor(SystemColors.Highlight, SystemColors.Window, 70);
  18. }
  19. }
  20. static public Color VSNetControlColor {
  21. get {
  22. return CalculateColor(SystemColors.Control, VSNetBackgroundColor, 195);
  23. }
  24. }
  25. static public Color VSNetPressedColor {
  26. get {
  27. return CalculateColor(SystemColors.Highlight, VSNetSelectionColor, 70);
  28. }
  29. }
  30. static public Color VSNetCheckedColor {
  31. get {
  32. return CalculateColor(SystemColors.Highlight,  SystemColors.Window, 30);
  33. }
  34. }
  35. public static Color CalculateColor(Color front, Color back, int alpha) {
  36. // Use alpha blending to brigthen the colors but don't use it
  37. // directly. Instead derive an opaque color that we can use.
  38. // -- if we use a color with alpha blending directly we won't be able 
  39. // to paint over whatever color was in the background and there
  40. // would be shadows of that color showing through
  41. Color frontColor = Color.FromArgb(255, front);
  42. Color backColor = Color.FromArgb(255, back);
  43. float frontRed = frontColor.R;
  44. float frontGreen = frontColor.G;
  45. float frontBlue = frontColor.B;
  46. float backRed = backColor.R;
  47. float backGreen = backColor.G;
  48. float backBlue = backColor.B;
  49. float fRed = frontRed*alpha/255 + backRed*((float)(255-alpha)/255);
  50. byte newRed = (byte)fRed;
  51. float fGreen = frontGreen*alpha/255 + backGreen*((float)(255-alpha)/255);
  52. byte newGreen = (byte)fGreen;
  53. float fBlue = frontBlue*alpha/255 + backBlue*((float)(255-alpha)/255);
  54. byte newBlue = (byte)fBlue;
  55. return  Color.FromArgb(255, newRed, newGreen, newBlue);
  56. }
  57. }
  58. }