private Label label = new Label(); public string text="csdn baihe_591";
private void FrmShow_Load(object sender, EventArgs e) { this.label.Location = new Point(149, 13); this.label.Size = new Size(134, 16); this.Controls.Add (label); this.label.Text = ""; this.timer1.Enabled = true; this.timer1.Interval = 500; p = new PointF(this.label.Size.Width, 0); }
PointF p; Font f = new Font("宋体", 10); Color c = Color.White; string temp; private void timer1_Tick(object sender, EventArgs e) {
Graphics g = this.label.CreateGraphics(); SizeF s = new SizeF(); s = g.MeasureString(text, f);//测量文字长度 Brush brush = Brushes.Black; g.Clear(c);//清除背景
if (temp != text)//文字改变时,重新显示 { p = new PointF(this.label.Size.Width, 0); temp = text; } else p = new PointF(p.X - 10, 0);//每次偏移10 if (p.X <= -s.Width) p = new PointF(this.label.Size.Width, 0); g.DrawString(text, f, brush, p); }
里的timer 对象,定期更新UI
在c#中其实滚动屏幕的实现很简单,只需要用到Graphics.DrawString方法. Graphics.DrawString (String s, Font font, Brush brush, PointF point) 在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串。具体代码:
http://blog.csdn.net/baihe_591/archive/2008/07/18/2671670.aspx
private Label label = new Label();
public string text="csdn baihe_591";
private void FrmShow_Load(object sender, EventArgs e)
{
this.label.Location = new Point(149, 13);
this.label.Size = new Size(134, 16);
this.Controls.Add (label);
this.label.Text = "";
this.timer1.Enabled = true;
this.timer1.Interval = 500;
p = new PointF(this.label.Size.Width, 0);
}
PointF p;
Font f = new Font("宋体", 10);
Color c = Color.White;
string temp;
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = this.label.CreateGraphics();
SizeF s = new SizeF();
s = g.MeasureString(text, f);//测量文字长度
Brush brush = Brushes.Black;
g.Clear(c);//清除背景
if (temp != text)//文字改变时,重新显示
{
p = new PointF(this.label.Size.Width, 0);
temp = text;
}
else
p = new PointF(p.X - 10, 0);//每次偏移10
if (p.X <= -s.Width)
p = new PointF(this.label.Size.Width, 0);
g.DrawString(text, f, brush, p);
}
label一开始坐标在label.Location=new Point(0,this.Height);
即在窗体下方在timer的Tick事件中
加入像
label.Location=new Point(label.Location.X, label.Location.Y - 1);
来控制由下到上