rainbow.cs

来自「C#高级编程第6版随书源代码 值得下载」· CS 代码 · 共 66 行

CS
66
字号
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Drawing;

namespace PCSCustomWebControls
{
   public class RainbowLabel : Label
   {
      private Color[] colors = new Color[] {Color.Red,
                                            Color.Orange,
                                            Color.Yellow,
                                            Color.GreenYellow,
                                            Color.Blue,
                                            Color.Indigo,
                                            Color.Violet};

      private int offset
      {
         get
         {
            object rawOffset = ViewState["_offset"];
            if (rawOffset != null)
            {
               return (int)rawOffset;
            }
            else
            {
               ViewState["_offset"] = 0;
               return 0;
            }
         }
         set
         {
            ViewState["_offset"] = value;
         }
      }

      public void Cycle()
      {
         offset = ++offset;
      }

      protected override void Render(HtmlTextWriter output)
      {
         string text = Text;
         for (int pos = 0; pos < text.Length; pos++)
         {
            int rgb = colors[(pos + offset) % colors.Length].ToArgb()
                                                          & 0xFFFFFF;
            output.Write(string.Format(
               "<font color=\"#{0:X6}\">{1}</font>", rgb, text[pos]));
         }
      }
   }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?