C# TrackBar拖动条改变滑块颜色

作者:小豹小小小 时间:2021-12-22 22:11:07 

本文实例为大家分享了C# TrackBar拖动条改变滑块颜色的具体代码,供大家参考,具体内容如下

原理

1.TrackBar拖动条的滑块的默认颜色是(23,23,23)偏蓝色,遍历TrackBar控件中的每一个像素点,获取颜色是(23,23,23)的像素点,用另外一种颜色在像素点的位置上绘制直径为1的圆形。
2.添加布尔值,判断鼠标是否在TrackBar中。
3.在鼠标进入控件事件中,布尔值为true;在鼠标离开控件事件中,布尔值为false。
4.加入1ms的定时器,在定时器事件中,如果布尔值为true,则引用改变颜色的方法。

缺陷

定位不是很精准,y方向会靠下一点,在拖动的时候,会有小bug。所以在应用于纵向的TrackBar拖动条时,绘制的时候需要y - (float)0.5。此时的bug会不明显,将就能够使用。(依然存在的小bug,会在滑块的尖儿上,留有痕迹,拖动的时候会留下混迹,是一个小点儿,可以再改进)

代码

改变颜色的方法:

public class ChangeSliderColor
    {
        //改变滑块颜色(横向控件)
        public void LevelChangeColor(Bitmap bitmap, Rectangle rectangle,Graphics graphics,Color color,TrackBar trackBar)
        {
            bitmap = new Bitmap(trackBar.Width, trackBar.Height);
            rectangle = new Rectangle(0, 0, trackBar.Width, trackBar.Height);
            graphics = trackBar.CreateGraphics();
            trackBar.DrawToBitmap(bitmap, rectangle);
            for (int x = 0; x < trackBar.Width; x++)
            {
                for (int y = 0;y < trackBar.Height; y++)
                {
                    color = bitmap.GetPixel(x, y);
                    if (color == Color.FromArgb(23,23,23))
                    {
                        graphics.DrawEllipse(new Pen(Color.Red), x, y, 1, 1);//这里的new Pen即改变后的颜色
                    }
                }
            }
        }

        //改变滑块颜色(竖向控件)
        public void VerticalChangeColor(Bitmap bitmap, Rectangle rectangle, Graphics graphics, Color color, TrackBar trackBar)
        {
            bitmap = new Bitmap(trackBar.Width, trackBar.Height);
            rectangle = new Rectangle(0, 0, trackBar.Width, trackBar.Height);
            graphics = trackBar.CreateGraphics();
            trackBar.DrawToBitmap(bitmap, rectangle);
            for (int x = 0; x < trackBar.Width; x++)
            {
                for (int y = 0; y < trackBar.Height; y++)
                {
                    color = bitmap.GetPixel(x, y);
                    if (color == Color.FromArgb(23, 23, 23))
                    {
                        graphics.DrawEllipse(new Pen(Color.Red), x, y - (float)0.5, 1, 1);
                    }
                }
            }
        }
 }

引用:

Bitmap bitmap; Rectangle rectangle; Graphics graphics; Color color;
        bool isIntrackBar = false;//判断鼠标是否在trackBar中
        private void timer_Tick(object sender, EventArgs e)
        {
            if (isIntrackBar == true)
            {
                ChangeSliderColor csc = new ChangeSliderColor();
                csc.LevelChangeColor(bitmap, rectangle, graphics, color, trackBar);
            }
        }
        //鼠标进入trackBar时,布尔值为true
        private void trackBar_MouseEnter(object sender, EventArgs e)
        {
            isIntrackBar = true;
        }
        //鼠标从trackBar中出来时,布尔值为false
        private void trackBar_MouseLeave(object sender, EventArgs e)
        {
            isIntrackBar = false;
        }

如果是纵向TrackBar,则引用ChangeSliderColor的VerticalChangeColor方法。
如果在一个窗体中,存在多个TrackBar,则每个trackBar一个布尔值,并在每个trackBar的MouseEnter事件中加入timer.Start(),在MouseLeave事件中加入timer.Stop(),并在timer_Tick事件中加入判断。

效果

C# TrackBar拖动条改变滑块颜色

来源:https://blog.csdn.net/weixin_44523029/article/details/115286332

标签:C#,拖动条,颜色
0
投稿

猜你喜欢

  • Java基于接口实现模拟动物声音代码实例

    2022-07-28 04:46:07
  • 详细解读C++编程中的匿名类类型和位域

    2023-11-02 23:08:18
  • Java8中对于LocalDateTime的序列化和反序列化问题

    2023-11-14 15:37:41
  • C#中var关键字用法分析

    2022-02-11 15:01:43
  • Java编程实现统计一个字符串中各个字符出现次数的方法

    2023-01-24 18:02:20
  • java实现简单银行家算法

    2022-01-31 23:33:19
  • Java基于Calendar类输出指定年份和月份的日历代码实例

    2023-09-20 07:40:57
  • Java中List Set和Map之间的区别_动力节点Java学院整理

    2022-12-11 04:57:38
  • C#(int)中Convert、Parse、TryParse的区别

    2023-06-25 03:19:50
  • LRU缓存替换策略及C#实现方法分享

    2021-08-27 04:20:49
  • SpringBoot使用Log4j过程详解

    2023-05-03 22:44:12
  • Spring Cloud Alibaba实现服务的无损下线功能(案例讲解)

    2022-07-05 08:14:25
  • winform把Office转成PDF文件

    2023-03-29 01:09:32
  • java类加载相关知识总结

    2023-10-19 13:31:57
  • 浅谈Action+Service +Dao 功能

    2023-01-04 13:44:20
  • JDK8并行流及串行流区别原理详解

    2023-06-25 16:23:39
  • Android Retrofit框架的使用

    2023-10-05 13:24:21
  • C#设置与获取环境变量的方法详解

    2021-09-03 20:55:29
  • Java中instanceof关键字实例讲解

    2023-08-04 07:48:31
  • Android编程简单实现九宫格示例

    2021-12-06 21:43:57
  • asp之家 软件编程 m.aspxhome.com