|  |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.ComponentModel; | 
					
						
							|  |  |  |  | using System.Drawing; | 
					
						
							|  |  |  |  | using System.Data; | 
					
						
							|  |  |  |  | using System.Text; | 
					
						
							|  |  |  |  | using System.Windows.Forms; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace HuizhongLibrary.MyAlphaControl | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     public partial class AlphaLabel : UserControl | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         private Bitmap m_BackgroundImage; | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 背景图片 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public new Bitmap BackgroundImage | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_BackgroundImage; } | 
					
						
							|  |  |  |  |             set  | 
					
						
							|  |  |  |  |             {  | 
					
						
							|  |  |  |  |                 m_BackgroundImage = value; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private StringPool m_ScrollText = new StringPool(); | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 滚动文字列表 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public StringPool ScrollText | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_ScrollText; } | 
					
						
							|  |  |  |  |             set { m_ScrollText = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private int m_ScrollTop = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public int ScrollTop | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_ScrollTop; } | 
					
						
							|  |  |  |  |             set { m_ScrollTop = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private int m_ScrollLeft = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public int ScrollLeft | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_ScrollLeft; } | 
					
						
							|  |  |  |  |             set { m_ScrollLeft = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private string m_MoveDirection = "None"; | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 移动方向(None,Left,Right,Top,Boottom) | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public string MoveDirection | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_MoveDirection; } | 
					
						
							|  |  |  |  |             set { m_MoveDirection = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private int m_DurationStep = 5; | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 每次移动多少个像素(默认一个像素,最慢的移动速度) | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public int DurationStep | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_DurationStep; } | 
					
						
							|  |  |  |  |             set { m_DurationStep = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private StringFormat m_TextAlign = new StringFormat(); | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 文本对齐 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public StringFormat TextAlign | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_TextAlign; } | 
					
						
							|  |  |  |  |             set { m_TextAlign = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private int m_Interval = 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public int Interval | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_Interval; } | 
					
						
							|  |  |  |  |             set { m_Interval = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         | 
					
						
							|  |  |  |  |         private int m_TimeOut = 30; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public int TimeOut | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_TimeOut; } | 
					
						
							|  |  |  |  |             set { m_TimeOut = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private bool m_TickEnable = false; | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 是否启用倒计时 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public bool TickEnable | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_TickEnable; } | 
					
						
							|  |  |  |  |             set | 
					
						
							|  |  |  |  |             {  | 
					
						
							|  |  |  |  |                 m_TickEnable = value; | 
					
						
							|  |  |  |  |                 if (value == true) { StartTimeer(); } | 
					
						
							|  |  |  |  |                 else { StopTimeer(); } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private Color m_BorderColor = Color.Black; | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 边框粗细 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public Color BorderColor | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_BorderColor; } | 
					
						
							|  |  |  |  |             set { m_BorderColor = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private bool m_Visible = true; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public new bool Visible | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_Visible; } | 
					
						
							|  |  |  |  |             set | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 m_Visible = value; | 
					
						
							|  |  |  |  |                 base.Visible = value; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private string m_NullText = ""; | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 空时显示的文本 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public string NullText | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return m_NullText; } | 
					
						
							|  |  |  |  |             set { m_NullText = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         public bool ShowDateTime = false; //是否显示时间 | 
					
						
							|  |  |  |  |         public string DateTimeFormat = "yyyy年M月d日HH:mm:ss"; | 
					
						
							|  |  |  |  |         public int MaxRowNumber = 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 当倒计时正常终止时触发 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public event Action<AlphaLabel> TimeTick; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private int ScrollTextWidth = 0; | 
					
						
							|  |  |  |  |         private int SRCCOPY = 13369376; | 
					
						
							|  |  |  |  |         private Graphics G1; | 
					
						
							|  |  |  |  |         private Graphics G2; | 
					
						
							|  |  |  |  |         private IntPtr hdc1; | 
					
						
							|  |  |  |  |         private IntPtr hdc2; | 
					
						
							|  |  |  |  |         | 
					
						
							|  |  |  |  |         | 
					
						
							|  |  |  |  |         public AlphaLabel() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             TextAlign.LineAlignment = StringAlignment.Near; | 
					
						
							|  |  |  |  |             TextAlign.Alignment = StringAlignment.Near; | 
					
						
							|  |  |  |  |             InitializeComponent(); | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #region 画背景图片(用于假透明显示) | 
					
						
							|  |  |  |  |         public void SetBackground(Bitmap bmp) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (bmp == null) return; | 
					
						
							|  |  |  |  |             BackgroundImage = new Bitmap(this.Bounds.Width, this.Bounds.Height); | 
					
						
							|  |  |  |  |             Graphics G2 = Graphics.FromImage(BackgroundImage); | 
					
						
							|  |  |  |  |             G2.DrawImage(bmp, new Rectangle(0, 0, this.Bounds.Width, this.Bounds.Height), new Rectangle(this.Left, this.Top, this.Bounds.Width, this.Bounds.Height), GraphicsUnit.Pixel); | 
					
						
							|  |  |  |  |             G2.Dispose(); | 
					
						
							|  |  |  |  |             //this.BorderStyle = BorderStyle.None; | 
					
						
							|  |  |  |  |             //this.BackColor=Color.Transparent; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 重画文字 | 
					
						
							|  |  |  |  |         //private byte[] CacheImage = null; | 
					
						
							|  |  |  |  |         public void DrawString(int x, int y, string s) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Bitmap bmp = null; | 
					
						
							|  |  |  |  |             if (BackgroundImage == null) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 bmp = new Bitmap(this.Bounds.Width, this.Bounds.Height); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 //复制图片 | 
					
						
							|  |  |  |  |                 //CacheImage = CustomIO.GetPhoto(this.BackgroundImage); | 
					
						
							|  |  |  |  |                 bmp = (Bitmap)BackgroundImage.Clone(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             G1 = this.CreateGraphics(); | 
					
						
							|  |  |  |  |             G2 = Graphics.FromImage(bmp); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             hdc1 = G1.GetHdc(); | 
					
						
							|  |  |  |  |             hdc2 = G2.GetHdc(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (BackgroundImage == null) G2.Clear(this.BackColor); | 
					
						
							|  |  |  |  |             Brush backBrush = new SolidBrush(this.ForeColor); | 
					
						
							|  |  |  |  |             G2.DrawString(s, this.Font, backBrush, x, y); | 
					
						
							|  |  |  |  |             backBrush.Dispose(); | 
					
						
							|  |  |  |  |             SystemInfo.BitBlt(hdc1, 0, 0, Width, Height, hdc2, 0, 0, SRCCOPY); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             G1.ReleaseHdc(hdc1); | 
					
						
							|  |  |  |  |             G2.ReleaseHdc(hdc2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             G1.Dispose(); | 
					
						
							|  |  |  |  |             G2.Dispose(); | 
					
						
							|  |  |  |  |             bmp.Dispose(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //if (pictureBox1.Image != null) pictureBox1.Image.Dispose(); | 
					
						
							|  |  |  |  |             //pictureBox1.Image = bmp; | 
					
						
							|  |  |  |  |             //GC.Collect(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 移动文字 | 
					
						
							|  |  |  |  |         public void MoveText() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (this.MoveDirection == "Left") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (this.ScrollLeft <= -this.ScrollTextWidth) { this.ScrollLeft = this.Width; AddScrollTextIndex(); } | 
					
						
							|  |  |  |  |                 this.ScrollLeft -= this.DurationStep; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (this.MoveDirection == "Right") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (this.ScrollLeft >= this.Width) { this.ScrollLeft = -this.ScrollTextWidth; AddScrollTextIndex(); } | 
					
						
							|  |  |  |  |                 this.ScrollLeft += this.DurationStep; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (this.MoveDirection == "Top") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (this.ScrollTop <= 0) { this.ScrollTop = this.Height; AddScrollTextIndex(); } | 
					
						
							|  |  |  |  |                 this.ScrollTop -= this.DurationStep; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (this.MoveDirection == "Bottom") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (this.ScrollTop >= this.Height) { this.ScrollTop = 0; AddScrollTextIndex(); } | 
					
						
							|  |  |  |  |                 this.ScrollTop += this.DurationStep; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             this.DrawString(this.ScrollLeft, this.ScrollTop, this.Text); | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 增加索引 | 
					
						
							|  |  |  |  |         void AddScrollTextIndex() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (string.IsNullOrEmpty(this.Text) == false) ScrollText.CheckIn(this.Text); | 
					
						
							|  |  |  |  |             if (ScrollText.Available == 0) this.Text = this.NullText; | 
					
						
							|  |  |  |  |             this.Text = ScrollText.CheckOut(); | 
					
						
							|  |  |  |  |             InitScrollTextSize(); | 
					
						
							|  |  |  |  |             //ScrollTextIndex++;  | 
					
						
							|  |  |  |  |             //if (ScrollTextIndex >= this.ScrollText.Count) | 
					
						
							|  |  |  |  |             //{ | 
					
						
							|  |  |  |  |             //    ScrollTextIndex = 0; | 
					
						
							|  |  |  |  |             //} | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 计算文字大小 | 
					
						
							|  |  |  |  |         private SizeF MeasureString(string Text, Font font) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Bitmap bmp = new Bitmap(1, 1, System.Drawing.Imaging.PixelFormat.Format32bppRgb); | 
					
						
							|  |  |  |  |             Graphics g = Graphics.FromImage(bmp); | 
					
						
							|  |  |  |  |             SizeF s = g.MeasureString(Text, font); | 
					
						
							|  |  |  |  |             return s; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 开始计时 | 
					
						
							|  |  |  |  |         Timer time1 = new Timer(); | 
					
						
							|  |  |  |  |         private int TimeNumber=0; | 
					
						
							|  |  |  |  |         public void StartTimeer() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             TimeNumber = this.TimeOut; | 
					
						
							|  |  |  |  |             time1.Interval = this.Interval * 1000; | 
					
						
							|  |  |  |  |             time1.Tick += time1_Tick; | 
					
						
							|  |  |  |  |             time1.Enabled = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         void time1_Tick(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (ShowDateTime == true) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 this.Text = DateTime.Now.ToString(DateTimeFormat); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (this.TimeNumber == 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     StopTimeer(); | 
					
						
							|  |  |  |  |                     TimeNumber = this.TimeOut; | 
					
						
							|  |  |  |  |                     if (this.TimeTick != null) this.TimeTick(this); | 
					
						
							|  |  |  |  |                     return; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 this.Text = TimeNumber.ToString(); | 
					
						
							|  |  |  |  |                 TimeNumber--; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             this.Refresh(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 停止计时 | 
					
						
							|  |  |  |  |         public void StopTimeer() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             time1.Tick -= time1_Tick; | 
					
						
							|  |  |  |  |             time1.Enabled = false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #region 刷新 | 
					
						
							|  |  |  |  |         public new void Refresh() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Bitmap bmp = null; | 
					
						
							|  |  |  |  |             if (BackgroundImage == null) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 bmp = new Bitmap(this.Bounds.Width, this.Bounds.Height); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 bmp = (Bitmap)BackgroundImage.Clone(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             //G1 = this.CreateGraphics(); | 
					
						
							|  |  |  |  |             G2 = Graphics.FromImage(bmp); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //hdc1 = G1.GetHdc(); | 
					
						
							|  |  |  |  |             //hdc2 = G2.GetHdc(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (BackgroundImage == null) G2.Clear(this.BackColor); | 
					
						
							|  |  |  |  |             Brush backBrush = new SolidBrush(this.ForeColor); | 
					
						
							|  |  |  |  |             //if (this.Border > 0) g.DrawRectangle(new Pen(BorderColor, this.Border), this.Bounds); | 
					
						
							|  |  |  |  |             //if (string.IsNullOrEmpty(this.Text) == false) g.DrawString(this.Text, this.Font, backBrush, new RectangleF(0, 0, this.Bounds.Width, this.Bounds.Height), TextAlign); | 
					
						
							|  |  |  |  |             if (string.IsNullOrEmpty(this.Text) == false) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 G2.DrawString(this.Text, this.Font, backBrush, new RectangleF(0, 0, this.Width, this.Height), this.TextAlign); | 
					
						
							|  |  |  |  |                 //if (TextAlign.Alignment == StringAlignment.Near) | 
					
						
							|  |  |  |  |                 //{ | 
					
						
							|  |  |  |  |                 //    G2.DrawString(this.Text, this.Font, backBrush, 0, 0); | 
					
						
							|  |  |  |  |                 //} | 
					
						
							|  |  |  |  |                 //if (TextAlign.Alignment == StringAlignment.Center) | 
					
						
							|  |  |  |  |                 //{ | 
					
						
							|  |  |  |  |                 //    float TextWidth = MeasureString(this.Text, this.Font).Width; | 
					
						
							|  |  |  |  |                 //    float x = (this.Width - TextWidth) / 2; | 
					
						
							|  |  |  |  |                 //    G2.DrawString(this.Text, this.Font, backBrush, x, 0); | 
					
						
							|  |  |  |  |                 //} | 
					
						
							|  |  |  |  |                 //if (TextAlign.Alignment == StringAlignment.Far) | 
					
						
							|  |  |  |  |                 //{ | 
					
						
							|  |  |  |  |                 //    float TextWidth = MeasureString(this.Text + "AA", this.Font).Width; | 
					
						
							|  |  |  |  |                 //    float x = (this.Width - TextWidth); | 
					
						
							|  |  |  |  |                 //    G2.DrawString(this.Text, this.Font, backBrush, x, 0); | 
					
						
							|  |  |  |  |                 //} | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             backBrush.Dispose(); | 
					
						
							|  |  |  |  |             //SystemInfo.BitBlt(hdc1, 0, 0, Width, Height, hdc2, 0, 0, SRCCOPY); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //G1.ReleaseHdc(hdc1); | 
					
						
							|  |  |  |  |             //G2.ReleaseHdc(hdc2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //G1.Dispose(); | 
					
						
							|  |  |  |  |             //G2.Dispose(); | 
					
						
							|  |  |  |  |             //bmp.Dispose(); | 
					
						
							|  |  |  |  |             if (pictureBox1.Image != null) pictureBox1.Image.Dispose(); | 
					
						
							|  |  |  |  |             pictureBox1.Image = bmp; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 新增文本行 | 
					
						
							|  |  |  |  |         public void AddRowText(string Text) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (this.ScrollText.Available == this.MaxRowNumber) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.ScrollText.CheckOut(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             this.ScrollText.CheckIn(Text); | 
					
						
							|  |  |  |  |             string ss = ""; | 
					
						
							|  |  |  |  |             for (int i = 0; i < this.ScrollText.Available; i++) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                ss+=this.ScrollText.Peek()+ "\n"; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             ss = ss.Substring(0, ss.Length - 1); | 
					
						
							|  |  |  |  |             this.Text = ss; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 清除文本 | 
					
						
							|  |  |  |  |         public void ClearRowText() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             this.ScrollText.Clear(); | 
					
						
							|  |  |  |  |             this.Text = ""; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |         #region 移除滚动文字 | 
					
						
							|  |  |  |  |         public void Remove(string item) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             this.ScrollText.Remove(item); | 
					
						
							|  |  |  |  |             if (this.Text == item) this.Text = ""; | 
					
						
							|  |  |  |  |             if (ScrollText.Available == 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.Text = this.NullText; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.Text = this.ScrollText.CheckOut(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (this.MoveDirection == "Left") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.ScrollLeft = this.Width;  | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (this.MoveDirection == "Right") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.ScrollLeft = 0;  | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (this.MoveDirection == "Top") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.ScrollTop = this.Height;  | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (this.MoveDirection == "Bottom") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.ScrollTop = 0;  | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             InitScrollTextSize(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #region 初始化文字大小 | 
					
						
							|  |  |  |  |         public void InitScrollTextSize() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             this.ScrollTextWidth =Convert.ToInt32(MeasureString(this.Text, this.Font).Width); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #region 隐藏背景控件 | 
					
						
							|  |  |  |  |         public void VisiblePictureBox() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             pictureBox1.Visible = false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         protected override void OnPaint(PaintEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             base.OnPaint(e); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |