NEWS

[C#] Number Effect Counter up and down in winform

[C#] Number Effect Counter up and down in winform
Đăng bởi: Thảo Meo - Lượt xem: 4822 07:40:07, 12/12/2022C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình tiếp tục chia sẻ các bạn tạo hiệu ứng khi thay đổi số up and down trên lập trình c#, winform.

[C#] How to Number Effect Counter Up and Down in Winform

Giao diện demo ứng dụng:

effect_number

Ở demo trên, khi chúng ta thay đổi giá trị số sẽ chạy hiệu ứng từ từ.

Video demo Number Effect:

Ở bài viết này mình sử dụng yield return để thực hiện.

Source code c#:

using NodaTime;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace EffectNumber
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int oldValue;
        private void Form1_Load(object sender, EventArgs e)
        {
            oldValue = Convert.ToInt32(lblNumber.Text);
        }
        private IEnumerable<int> CountText(int newValue, int speed)
        {
            var CountFPS = 30;         
            var Duration = 1;
            int previousValue = oldValue;
            int stepAmount;
            oldValue = newValue; 

            if (newValue - previousValue < 0)
            {
                stepAmount = Convert.ToInt32( Math.Floor(Convert.ToDouble( (newValue - previousValue) / (CountFPS * Duration) ))); 
            }
            else
            {
                stepAmount = Convert.ToInt32( Math.Ceiling((newValue - previousValue) / (CountFPS * Duration) * 1.0d)); 
            }
            if (stepAmount == 0)
            {
                yield return newValue;

            }
            else {
                if (previousValue < newValue)
                {
                    while (previousValue < newValue)
                    {
                        previousValue += stepAmount;
                        if (previousValue > newValue)
                        {
                            previousValue = newValue;
                        }

                        yield return previousValue;


                        Thread.Sleep(speed);
                    }
                }
                else
                {
                    while (previousValue > newValue)
                    {
                        previousValue += stepAmount;
                        if (previousValue < newValue)
                        {
                            previousValue = newValue;
                        }

                        yield return previousValue;


                        Thread.Sleep(speed);

                    }
                }
            }
           
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Task.Run(() =>
            {
                foreach (int item in CountText(Convert.ToInt32(txtNewNumber.Text), Convert.ToInt32(txtSpeed.Text)))
                {
                    this.BeginInvoke(new Action(() => {
                        lblNumber.Text = item.ToString("N0");

                    }));
                }

            });
        }
    }
}

Các bạn có thể chỉnh sửa tốc độ theo ý muốn.

Thanks for watching!

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Number Effect Counter up and down in winform
Đăng bởi: Thảo Meo - Lượt xem: 4822 07:40:07, 12/12/2022C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.