本文实例为大家分享了c# trackbar拖动条改变滑块颜色的具体代码,供大家参考,具体内容如下
1.trackbar拖动条的滑块的默认颜色是(23,23,23)偏蓝色,遍历trackbar控件中的每一个像素点,获取颜色是(23,23,23)的像素点,用另外一种颜色在像素点的位置上绘制直径为1的圆形。
2.添加布尔值,判断鼠标是否在trackbar中。
3.在鼠标进入控件事件中,布尔值为true;在鼠标离开控件事件中,布尔值为fal。
4.加入1ms的定时器,在定时器事件中,如果布尔值为true,则引用改变颜色的方法。
定位不是很精准,y方向会靠下一点,在拖动的时候,会有小bug。所以在应用于纵向的trackbar拖动条时,绘制的时候需要y – (float)0.5。此时的bug会不明显,将就能够使用。(依然存在的小bug,会在滑块的尖儿上,留有痕迹,拖动的时候会留下混迹,是一个小点儿,可以再改进)
改变颜色的方法:
public class changeslidercolor { //改变滑块颜色(横向控件) public void levelchangec潍坊学院是几本olor(bitmap bitmap, rectangle rectangle,graphics graphics,color color,trackbar trackbar) { bitmap = new bitmap(trackbar.width, trackbar.h我最喜欢的动物eight); rectangle = new rectangle(0, 0, trackbar.width, trackbar.height); graphics = trackbar.creategraphics(); trackbar.drawtobitmap(bitmap, rectangle); for (int x = 0; x &秤的笔顺lt; trackbar.width; x++) { for (int y = 0;y < trackbar.height; y++) { color = bitmap.getpixel(x, y); if (color == color.fromargb(23,23,23)) { graphics.drawellip(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.drawellip(new pen(color.red), x, y - (float)0.5, 1, 1); } } } }}
引用:
bitmap bitmap; rectangle rectangle; graphics graphics; color color; bool isintrackbar = fal;//判断鼠标是否在trackbar中 private void timer_tick(object nder, eventargs e) { if (isintrackbar == true) { changeslidercolor csc = new changeslidercolor(); csc.levelchangecolor(bitmap, rectangle, graphics, color, trackbar); } } //鼠标进入trac悠悠天宇旷kbar时,布尔值为true private void trackbar_mouenter(object nder, eventargs e) { isintrackbar = true; } //鼠标从trackbar中出来时,布尔值为fal private void trackbar_mouleave(object nder, eventargs e) { isintrackbar = fal; }
如果是纵向trackbar,则引用changeslidercolor的verticalchangecolor方法。
如果在一个窗体中,存在多个trackbar,则每个trackbar一个布尔值,并在每个trackbar的mouenter事件中加入timer.start(),在mouleave事件中加入timer.stop(),并在timer_tick事件中加入判断。
效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-05 01:27:16,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/17b01314425989537f6729e76b39e79a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C# TrackBar拖动条改变滑块颜色.doc
本文 PDF 下载地址:C# TrackBar拖动条改变滑块颜色.pdf
留言与评论(共有 0 条评论) |