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

本文实例为大家分享了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事件中加入判断。

效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • c#禁止通过拖动,双击标题栏改变窗体大小的方法

    最近写windows窗体程序,发现一个烦人的问题. 窗体初始化时禁用了最大化按钮,并使之最大化.本希望窗体一直保持最大化.但是拖动,双击标题栏时窗体就会缩小.烦死了+_+. 最后,终于找到了解决方法. //禁止通过拖动,双击标题栏改变窗体大小. public const int WM_NCLBUTTONDBLCLK = 0xA3; const int WM_NCLBUTTONDOWN = 0x00A1; const int HTCAPTION = 2; protected override vo

  • C# 实现窗口无边框,可拖动效果

    具体代码如下所示: #region 无边框拖动效果 [DllImport("user32.dll")]//拖动无窗体的控件 public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); public const int

  • 基于C# wpf 实现Grid内控件拖动详情

    目录 一.如何实现? 1.注册鼠标事件 2.记录位置 3.跟随鼠标移动 4.恢复标识 二.示例 前言: 有一些业务场景中我们需要拖动控件,在Grid中就可以实现控件拖动,通过设置Margin属性即可,根据鼠标的移动,设置相应的Margin的Left.Top,当然有时也不是直接设置的,需要根据HorizontalAlignment.VerticalAlignment值有不同的计算方法. 一.如何实现? 1.注册鼠标事件 拖动的控件需要注册3个鼠标事件分别是,鼠标按下.鼠标移动.鼠标弹起. 以But

  • c#可以创建任意控件的拖动方法

    经常进行图形界面设计的编程者肯定知道,控件在设计的时候才能随意拖动,运行的时候就不能拖动了. 你肯定会问:运行时能随意拖动控件吗?答案是肯定的,我们的项目涉及到了这一点,我已经实现了,实际上很简单的哟.我就拿出来给你们show一下,哈哈,各位高手不要笑我哟. 我们先从简单的入手,一步一步的来吧: 首先,新建一个Form1,拖进去一个label1,text为:鼠标拖动控件练习.接下来就是为它注册事件了,这里我们注册的是label1_MouseUp,label1_MouseDown两个事件.在实现注

  • C#中WinForm控件的拖动和缩放的实现代码

    C# WinForm控件的拖动和缩放是个很有用的功能.实现起来其实很简单的,主要是设计控件的MouseDown.MouseLeave.MouseMove事件,下面的几个步骤将逐步实现C# WinForm控件的拖动和缩放的功能. 1.定义一个枚举类型,描述光标状态 private enum EnumMousePointPosition { MouseSizeNone = 0, //'无 MouseSizeRight = 1, //'拉伸右边框 MouseSizeLeft = 2, //'拉伸左边框

  • c# WinForm制作图片编辑工具(图像拖动、缩放、旋转、抠图)

    闲暇之余,开发一个图片编辑小程序.程序主要特点就是可方便的对多个图像编辑,实现了一些基本的操作.本文主要介绍一下程序的功能.设计思路. 执行程序 下载地址: https://pan.baidu.com/s/1cszsgjKN9ecWZ9sm1hDAdQ 1 功能介绍 程序主界面 点击打开图片,可选择多个图片文件.图片缩略图左侧显示,双击左侧图片,添加到编辑区. 图片编辑区分为:纸张区域和打印区域.图片只能在打印区编辑.当选中这两个区,可调整各个区的大小. 主要功能点: 1 拖动:选中图片后,可以

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

    本文实例为大家分享了C# TrackBar拖动条改变滑块颜色的具体代码,供大家参考,具体内容如下 原理 1.TrackBar拖动条的滑块的默认颜色是(23,23,23)偏蓝色,遍历TrackBar控件中的每一个像素点,获取颜色是(23,23,23)的像素点,用另外一种颜色在像素点的位置上绘制直径为1的圆形.2.添加布尔值,判断鼠标是否在TrackBar中.3.在鼠标进入控件事件中,布尔值为true:在鼠标离开控件事件中,布尔值为false.4.加入1ms的定时器,在定时器事件中,如果布尔值为tr

  • Android 动态改变SeekBar进度条颜色与滑块颜色的实例代码

    遇到个动态改变SeekBar进度条颜色与滑块颜色的需求,有的是根据不同进度改变成不同颜色. 对于这个怎么做呢?大家都知道设置下progressDrawable与thumb即可,但是这样设置好就是确定的了,要动态更改需要在代码里实现. 用shape进度条与滑块 SeekBar设置 代码里动态设置setProgressDrawable与setThumb 画图形,大家都比较熟悉,background是背景图,secondaryProgress第二进度条,progress进度条: <layer-list

  • 易语言改变滑块条方向的方法

    方向属性 所属对象:滑块条    操作系统支持:Windows,数据类型:整数型: 可供选择的属性值: 0.横向 1.纵向 语法:  对象.方向 =  整数型 应用对象:滑块条 例程 说明: 改变滑块条的方向. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

  • Android中使用SeekBar拖动条实现改变图片透明度(代码实现)

    场景 效果 实现 将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局,然后添加一个ImageView和SeekBar,并分别添加id属性. 其中SeekBar,添加最大值为255.因为透明度的最大值就是255  android:max="255" 并设置当前值就是255 android:progress="255" 完整xml代码 <?xml version=&quo

  • Android中SeekBar拖动条使用方法详解

    本文实例为大家分享了Android中SeekBar拖动条使用方法的具体代码,供大家参考,具体内容如下 SeekBar控件效果展示 拖动条SeekBar继承了ProgressBar,因此ProgressBar所支持的xml属性和方法完全适合SeekBar.只是进度条ProgressBar采用颜色填充来表明进度完成程度,拖动条SeekBar则通过滑块的外置来标识--拖动滑块允许进度值的改变.(例如:条件Android系统的音量) 如上图,通过拖动SeekBar滑块,实现图片透明度的修改.实现代码如下

  • Android开发手册SeekBar拖动条使用实例

    目录 实践过程 常用属性 基本使用 自定义样式 自定义样式 实践过程 常用属性 因为Seekbar继承自ProgressBar,所以ProgressBar支持的XML属性SeekBar都适用. [android:max="100"]:设置该进度条的最大值[android:progress="50"]:设置该进度条的已完成进度值[android:progressDrawable="@drawable/icon_xinsui"]:自定义drawabl

  • Android高级界面组件之拖动条和评星条的功能实现

    一      拖动条 安卓手机音量设置都是给出一个拖动条,使得用户能够拖动滑块进行设置,这里我们介绍拖动条. 安卓拖动条控件是继承自ProgressBar控件,所以它能够支持ProgressBar的xml属性.但是他有自己的独特属性: android:max       设置最大的拖动两 android:progress     设置初始化进度 android:thumb        设置滑块图形 事件监听方面,拖动条需要注意:我们不在监听用户的点击操作,而是监听滑块的改变,下面用一个实例简单

  • Android开发之拖动条/滑动条控件、星级评分控件功能的实例代码

    ProgressBar有2个子控件: SeekBar   拖动条控件 RatingBar   星级评分控件 1.拖动条控件 <SeekBar android:layout_width="300dp" android:layout_height="wrap_content" android:id="@+id/seekBar" android:min="0" android:max="100" andro

  • JS实现拖拽进度条改变元素透明度

    今天要分享的是运用原生JS拖拽进度条改变元素透明度,效果如下: 以下是代码实现,欢迎大家复制粘贴. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>原生JS拖拽进度条改变元素透明度</title> <style> #pa

  • Android中SeekBar拖动条控件使用方法详解

    SeekBar拖动条控件使用方法,具体内容如下 一.简介 1.  二.SeekBar拖动条控件使用方法 1.创建SeekBar控件 <SeekBar android:id="@+id/SeekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" android:progress="30" /> 2.添加setOn

随机推荐