91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#怎么實現TrackBar拖動條改變滑塊顏色

發布時間:2022-02-17 13:39:15 來源:億速云 閱讀:257 作者:iii 欄目:開發技術

本篇內容主要講解“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事件中加入判斷。

效果

C#怎么實現TrackBar拖動條改變滑塊顏色

到此,相信大家對“C#怎么實現TrackBar拖動條改變滑塊顏色”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蓝山县| 桐梓县| 磴口县| 民乐县| 鲁甸县| 治县。| 锡林郭勒盟| 卓资县| 珠海市| 莱州市| 彰化县| 威信县| 通州区| 桂平市| 龙陵县| 锡林浩特市| 鄂伦春自治旗| 乌鲁木齐县| 漠河县| 洪湖市| 平利县| 望都县| 常山县| 淳安县| 大洼县| 调兵山市| 苏尼特右旗| 洛阳市| 乌兰察布市| 济阳县| 阳谷县| 高碑店市| 清水县| 建阳市| 沧源| 三穗县| 巴林右旗| 彩票| 嘉兴市| 常德市| 汶川县|