用C#怎么做出字幕滚动的效果?(要有播放器类似功能)

解决方案 »

  1.   

    多线程System.thread.timer 
    里的timer 对象,定期更新UI
      

  2.   

    哈哈,刚好做播放器,
    在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
      

  3.   


    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);     
     }   
      

  4.   

    使用timer控件字幕放在一个label中
    label一开始坐标在label.Location=new Point(0,this.Height);
    即在窗体下方在timer的Tick事件中
    加入像
    label.Location=new Point(label.Location.X, label.Location.Y - 1);
    来控制由下到上
      

  5.   

    是网站就要用JAVASCRIPT的settimeout();