最近,在用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;
}
}
如此,便可實現與其他滾動條相似的功能。
測試發現,刻度排列不可逆,暫時無其他方法可以解決這個問題,若有的話,還請大神告知,謝謝。