c/s模式下的文字滚动

来源:互联网 发布:javascript弹出输入框 编辑:程序博客网 时间:2024/05/20 23:03

     从B/S模式的开发转到C/S模式的开发,起初还真有点不大习惯。一下几篇是开始做C/S模式开发的小列子吧。

    第一个:

    文字从右向左滚动效果

       效果图如下
    

   文字从右向左开始滚动。
 
  代码具体如下
      首先在load事件里添加
     加载timer事件

        Label lbl = new Label();//注意此行标签        private void Form3_Load(object sender, EventArgs e)        {            //新增lable标签            this.Size = new System.Drawing.Size(1000, 600);            lbl.Size = new Size(640, 360);            lbl.Location = new Point(0, 50);            //this.lbl.BorderStyle = BorderStyle.Fixed3D;            this.Controls.Add(lbl);            //设置timer控件启动和设置            this.timer1.Start();            timer1.Interval = 10;        }

 2:timer事件如下
              

        int w = 700;//运动起始位置        int h = 20;        string show_tit = "中华人民共和国中国人民解放军第二炮兵总医院!";        private void timer1_Tick(object sender, EventArgs e)        {            int tit_leng = Convert.ToInt32(this.CreateGraphics().MeasureString(show_tit, new Font("宋体", 13)).Width);            if (w > 0 - tit_leng)            {                w--;                marquee();            }            else            {                w = 700;            }        }



3:marquee方法如下
 

public void marquee()        {            Bitmap bm = new Bitmap(900, 40);            Graphics g = Graphics.FromImage(bm);            g.Clear(Color.Black);            Rectangle recText = new Rectangle(0, 0, 900, 40);            g.DrawString(show_tit, new Font("黑体", 15), new SolidBrush(Color.Blue), w, h);            // 绘制内容            Bitmap bmpBack1 = bm.Clone(recText, System.Drawing.Imaging.PixelFormat.Format24bppRgb);            lbl.BackgroundImage = bmpBack1;        }


事件启动运行效果如上图。。。
   

               第二个:文字从下向上滚动
  
            步骤都是一样,
                      在横向滚动的时候是X坐标的自减,一直到和该显示的字符串的长度对比,出现的情况作出说明
                      竖向显示的时候是Y坐标的自减,一直到和该显示的字符串的长度对比,出现的情况作出说明
   
          竖向显示界面

     具体代码如下
Label lbl = new Label();        private void Form3_Load(object sender, EventArgs e)        {            //新增lable标签            this.Size = new System.Drawing.Size(1000, 600);            lbl.Size = new Size(640, 360);            lbl.Location = new Point(0, 50);            //this.lbl.BorderStyle = BorderStyle.Fixed3D;            this.Controls.Add(lbl);            //设置timer控件启动和设置            this.timer1.Start();            timer1.Interval = 10;        }

Timer事件如下
int h = 360;        string show_tit = "中华人民共和国中国人民解放军第二炮兵总医院!中华人民共和国中国人民解放军第二炮兵总医院!中华人民共和国中国人民解放军第二炮兵总医院!";        private void timer1_Tick(object sender, EventArgs e)        {            //计算高度或者长度            int tit_leng = Convert.ToInt32(this.CreateGraphics().MeasureString(show_tit, new Font("宋体", 13)).Height);            if (h > 0 - tit_leng)            {                h--;                marquee();            }            else            {                h = 360;            }        }

Marquee方法如下
public void marquee()        {            ////////**********************************************            //Bitmap bm = new Bitmap(500, 300);            //Graphics g = Graphics.FromImage(bm);            //g.Clear(Color.Black);            //Rectangle recTxt = new Rectangle(0, h, 500, 300);            //g.DrawString(show_tit, new Font("黑体", 15), new SolidBrush(Color.Blue), recTxt);            //lbl.BackgroundImage = bm;            ////////**********************************************            Bitmap bm = new Bitmap(640, 360);            Graphics g = Graphics.FromImage(bm);            g.Clear(Color.Black);            Rectangle recTxt = new Rectangle(0, h, 640, 360);            g.DrawString(show_tit, new Font("黑体", 15), new SolidBrush(Color.Blue), recTxt);            lbl.BackgroundImage = bm;        }

注释掉的部分可以参考一下
    如有问题请留言哦 我会继续解答滴