Dev TrackBar的使用--座標軸反轉以及滾輪反向解決

最近,在用GDI+繪圖的過程中,做了一個用滾動條控制刷新所繪區域的功能,因爲滾動條改變,只重繪固定的區域,只顯示該區域內的數據,所以選擇了dev 的Track bar,其實,多數問題可能都是不瞭解屬性所致,如下,直接給出關鍵的屬性圖,

從上圖可以看出,通過屬性,可以控制trackbar的軸方向以及軸上值得排列方向,而且可以通過自定義刻度,間距等,來繪製自己所需得樣式。

另外,trackbar默認支持滾輪,但是,其滾輪得滾動方向和實際所需效果是相反的(即,往上滾動是,豎軸值向下移動,反之,向上移動),這於操作習慣不符,分析原因,我覺得可能是反轉了座標軸導致的,默認的橫軸下的滾輪操作,左側爲小值,向上滾動時,值向右側移動,當爲豎軸時,小值在底部,向上滾動,值向上移動,值增大,當座標軸反轉後,頂部爲小值,向上滾動時,值增大,於排列相反,如此,便導致這種現象。

解決辦法時:

設置屬性AllowMouseWheel爲false,再添加trackbar的mousewheel事件來自定義滾動事件,如下:

private void trackBarControl1_Properties_MouseWheel(object sender, MouseEventArgs e)
        {
            if (e.Delta<0)
            {//往下滾動
                //MessageBox.Show("1");
                this.trackBarControl1.Value += 1;
                trackBarControl1.Refresh();
                trackBarControl1.Invalidate();
                trackBarControl1.Update();
            }
            else
            {//往上滾動
                //MessageBox.Show("2");
                trackBarControl1.Value -= 1;
            }
        }

如此,便可實現與其他滾動條相似的功能。

測試發現,刻度排列不可逆,暫時無其他方法可以解決這個問題,若有的話,還請大神告知,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章