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

目录
  • 文章描述
  • 开发环境
  • 开发工具
  • 实现代码
  • 实现效果

文章描述

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

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

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

开发环境

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

实现效果

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

到此这篇关于C#实现跑马灯效果的示例代码的文章就介绍到这了,更多相关C#跑马灯内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 小程序实现跑马灯效果

    本文实例为大家分享了小程序实现跑马灯效果的具体代码,供大家参考,具体内容如下 先看效果图 实现步骤: index.wxml文件 <!-- 跑马灯效果 --> <view class="example">   <view class="marquee_box">     <view class="marquee_text"            style="{{orientation}}:{{m

  • Vue跑马灯marquee组件使用方法详解

    本文实例为大家分享了Vue跑马灯marquee组件的具体代码,供大家参考,具体内容如下 一.实现效果 二.实现过程 前言:最开始用间隔器方案制作了一个跑马灯,但是放在移动端中会出现严重的掉帧卡顿现象,于是整理思路后采用transition方案制作一个从右到左的动画处理问题 思路整理: 1. 过渡是需要设定时间的,但是跑马灯中的文本可能是长短不一的 解决方案:根据文本的总宽度(即文本总长)设定过渡时间,假设文本宽度500px,我们将其除以50,即过渡时间为10s 原生js表示如下: const t

  • Android自定义可控制速度的跑马灯

    背景 原生的TextView是支持跑马灯效果的,但是在项目中实际用了之后,达不到需求,原因是内容滚动太慢,速度无法调节.因此,需要自定义一个可以调节速度的跑马灯. 思路 目前实现的思路是对文本内容不断地重绘,同时改变每次重绘的坐标,来在视觉上达到内容在滚动的效果.缺点是如果每次改变的坐标差值太大,会有明显的卡顿效果.经过调试,下面源码中的速度感觉还可以接受,如果有特殊需求,自行在调试一下. 源码(Kotlin) class CustomMarqueeView : AppCompatTextVie

  • Unity实现跑马灯效果的示例代码

    目录 一.效果 二.需要动画插件DOTween 三.脚本 1.每个格子上的脚本文件 2.管理脚本文件 一.效果 二.需要动画插件DOTween 下载地址 三.脚本 1.每个格子上的脚本文件 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; public class MarqueeUIItem : MonoBe

  • Vue实现跑马灯样式文字横向滚动

    本文实例为大家分享了Vue实现跑马灯样式文字横向滚动的具体代码,供大家参考,具体内容如下 需求: 在Vue项目的顶部,来实现文字左右滚动 步骤: 1.可以自己封装一个组件,也可以自己写,也可以复制以下代码 2.封装完成以后要在所需的组件中引入,注册,并使用 代码: 封装一个专门用来实现跑马灯效果的组件marquee组件 <template> <!-- 跑马灯组件 --> <div class="marquee-wrap" ref="marquee

  • 基于WPF实现控件轮廓跑马灯动画效果

    代码如下 一.创建EdgeLight.xaml代码如下. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"                     xmlns:controls="c

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

    目录 文章描述 开发环境 开发工具 实现代码 实现效果 文章描述 跑马灯效果,功能效果大家应该都知道,就是当我们的文字过长,整个页面放不下的时候(一般用于公告等),可以让它自动实现来回滚动,以让客户可以看到完整的信息(虽然要多等一会儿时间). 其实对于Winform这种技术,实现任何的动态效果相对来说都比较麻烦.而且一般都需要搭配定时器使用,当然,这次要写的跑马灯效果也是一样的,使用了System.Timers.Timer来实现,关于其他定时器以及用法,之前文章有写过,有兴趣的可以翻一下. 因为

  • Vue 使用计时器实现跑马灯效果的实例代码

    Vue 使用计时器实现跑马灯效果,代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="

  • Android用过TextView实现跑马灯效果的示例

    以前就遇到过这个问题,今天重新拾起来. 跑马灯效果其实就是当文字超过TextView控件宽度的时候,使用滚动的方式显示出来: 方法1:(直接xml搞定) Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize="marquee": 2.TextView必须单行显示,且内容必须超出TextView宽度: 3.TextView要获得焦点才能滚动. xml代码如下: <TextView android:id="@+i

  • android TextView实现跑马灯效果

    本文实例为大家分享了android TextView跑马灯效果的具体代码,供大家参考,具体内容如下 一.要点 设置四个属性 android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" 直接在xml中使用 <TextView android:layout_

  • Android基于TextView实现跑马灯效果

    本文实例为大家分享了Android TextView实现跑马灯效果的具体代码,供大家参考,具体内容如下 当Layout中只有一个TextView需要实现跑马灯效果时,操作如下. 在Layout的TextView配置文件中增加         android:ellipsize="marquee"         android:focusable="true"         android:focusableInTouchMode="true"

  • Android自定义textview实现竖直滚动跑马灯效果

    本文实例为大家分享了Android自定义textview实现跑马灯效果的具体代码,供大家参考,具体内容如下 xml布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c

  • 小程序文字跑马灯效果

    本文实例为大家分享了小程序文字跑马灯效果的具体代码,供大家参考,具体内容如下 market.wxml <!--pages/market/market.wxml--> <view>1 显示完后再显示</view> <view class="example"> <view class="marquee_box"> <view class="marquee_text" style=&qu

  • jQuery实现参数自定义的文字跑马灯效果

    本文为大家分享了jQuery实现文字跑马灯效果的具体代码,供大家参考,具体内容如下 一.明确需求 基本需求:最近在工作中接到一个新需求,简单来说就是实现一行文字从右到左跑马灯的效果,并且以固定的时间间隔进行循环. 原本这是一个很容易实现的需求,但是难点是要求很多参数得是用户可自行设置的,包括文字跑马灯的速度和距离下次出现的间隔.具体需求见下图: 这样一来实现这个功能就会有点麻烦了,需要烧烧脑细胞了. 二.具体实现过程 HTML中只需要如下几行代码 <div id="swiper"

  • android使用TextView实现跑马灯效果

    本文实例为大家分享了android使用TextView实现跑马灯效果的具体代码,供大家参考,具体内容如下 先上效果图:此为静态图,实际动态中文字匀速向左滑动. 实现步骤: 第一步:创建好布局页面 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.c

随机推荐