C#实现跑马灯效果的示例代码

作者:Csharp小记 时间:2022-06-10 07:12:40 

文章描述

跑马灯效果,功能效果大家应该都知道,就是当我们的文字过长,整个页面放不下的时候(一般用于公告等),可以让它自动实现来回滚动,以让客户可以看到完整的信息(虽然要多等一会儿时间)。

其实对于Winform这种技术,实现任何的动态效果相对来说都比较麻烦。而且一般都需要搭配定时器使用,当然,这次要写的跑马灯效果也是一样的,使用了System.Timers.Timer来实现,关于其他定时器以及用法,之前文章有写过,有兴趣的可以翻一下。

因为使用麻烦,所以要进行封装,所以要不断的造轮子(尽管是重复的),但重复也是一个加强记忆以及不断深入的过程,我认为这并不是多余的。因此,为了方便调用,还是用自定义控件封装一下属性,使用的时候只要设置属性即可。

C#实现跑马灯效果的示例代码

开发环境

.NET Framework版本:4.5

开发工具

 Visual Studio 2013

实现代码

public partial class CustomLable : Label
   {
       System.Timers.Timer timer = new System.Timers.Timer(200);
       int offset = 5;//偏移量
       PointF textPoint;
       public CustomLable()
       {
           InitializeComponent();
           textPoint = new PointF(this.Width, 0);
           timer.Elapsed += (s, e) =>
           {
               try
               {
                   if (!IsDisposed)
                   {
                       Graphics g = CreateGraphics();
                       SizeF textSize = g.MeasureString(Text, Font);
                       textPoint.X -= offset;
                       if (textPoint.X <= -textSize.Width)
                       {
                           textPoint.X = Width;
                       }
                       g.Clear(BackColor);
                       g.DrawString(Text,Font, new SolidBrush(ForeColor), textPoint);
                   }
               }
               catch { }
           };
       }

protected override void OnPaint(PaintEventArgs pe)
       {
           base.OnPaint(pe);
       }

private bool _IsMarquee;

[Browsable(true)]
       [Description("是否以跑马灯效果显示")]
       public bool IsMarquee
       {
           get { return _IsMarquee; }
           set
           {
               _IsMarquee = value;
               Marquee();
           }
       }

public void Marquee()
       {
           if (IsMarquee)
           {
               timer.Start();
           }
           else
           {
               timer.Stop();
               textPoint = new PointF(0, 0);
               try
               {
                   if (!IsDisposed)
                   {
                       Graphics g = CreateGraphics();
                       g.Clear(BackColor);
                       g.DrawString(Text, Font, new SolidBrush(ForeColor), textPoint);
                   }
               }
           }
       }
   }
private void button1_Click(object sender, EventArgs e)
       {
           customLable1.IsMarquee = !customLable1.IsMarquee;
       }

实现效果

C#实现跑马灯效果的示例代码

代码解析:由于我们直接是在IsMarquee的set属性中就调用了Timer事件;所以即便不运行,在设计窗体时改变属性就可以直接看到效果。

来源:https://mp.weixin.qq.com/s/WOQs_XvDD8Hq9aM-_ERDYw

标签:C#,跑马灯
0
投稿

猜你喜欢

  • java实战之猜字小游戏

    2022-03-31 14:48:01
  • Android 图片选择详解及实例代码

    2021-09-13 13:13:19
  • Android实现EditText的富文本编辑

    2022-04-14 21:44:29
  • java 二叉查找树实例代码

    2022-07-23 22:54:28
  • Java编程中使用XFire框架调用WebService程序接口

    2023-11-06 20:16:33
  • IDEA配置使用Maven Helper插件的方法(详细配置)

    2022-07-17 03:09:21
  • Android手动检查并申请权限方法

    2023-08-04 23:14:17
  • Android全面屏适配与判断超详细讲解

    2022-02-02 20:49:34
  • Android实现摇一摇功能

    2023-07-23 20:21:11
  • Android开发之menu菜单

    2023-04-13 04:10:45
  • Java Swing null绝对布局的实现示例

    2021-07-27 06:07:18
  • Redis监听过期的key实现流程详解

    2023-12-12 02:41:28
  • 浅谈十个常见的Java异常出现原因

    2022-10-04 07:58:50
  • java判断回文数示例分享

    2023-03-20 03:18:22
  • 一文助你搞懂参数传递原理解析(java、go、python、c++)

    2022-04-04 13:10:15
  • SpringMVC一步到位精通拦截器

    2023-11-25 01:47:45
  • 解决使用IDEA时跳转到.class的问题

    2022-07-12 20:46:37
  • Spring注解之@Lazy注解使用解析

    2023-08-28 23:12:23
  • 介绍java中Pair(配对)

    2021-09-03 10:15:39
  • 在SpringBoot中配置Thymeleaf的模板路径方式

    2021-11-26 17:34:26
  • asp之家 软件编程 m.aspxhome.com