在很久很久以前使用VB6的時代,需要寫一些程式碼,才能做出上述的功能,時代來到了NET 2003我還是用代碼,
最近要用了卻找不到代碼,由於程式太多了,不知道放到哪顆硬碟中了.再加上也沒再用2003嘍.
而現階段最新的開發工具已經來到 NET2012.
於是上網找了一下資料,事實告訴我們快失業了.因為ScatterGraph已經內建這個功能了.
Zoom In/Out 使用 Shift+滑鼠滾輪, Pan 使用 Ctrl+滑鼠.就大功告成了.
竟然要沒頭路,這未免也太靠北了.身為資深軟體工程師的我,當然不能這樣就把程式給交出去,理所當然要加些料,
不然老闆認為你上班都在上網.
準備好要秀的資料.
加入一個 ContextMenuStrip 到視窗中.
依序加入 None,ZoomXY,PanXY,Restore.
用滑鼠依序對 “None”,”ZoomXY”,”PanXY”,”Restore” 作連續擊點(double click).
在輸入如下程式碼
然後連結 scatterGraph 和 ContextMenuStrip.
就大功告成.
執行畫面如下:按下滑鼠右鍵.
如果滑鼠在拉時想要有這種效果.
請服用下面方法.
利用短短的程式碼,造就出自己的價值.
事情當然沒有這麼簡單就結束了,在程式還沒變成蝴蝶飛上天之前我們就要把蟲給抓出來.
問題:當我做Zoom動作時,鼠標不會變 ,需要將滑鼠移到這個元件外,再回到此元件,才會改變圖示.
約略看了一下設定,似乎無解,只好從MouseEnter, MouseHover, MouseLeave 這邊下手.
動作依序是MouseEnter → MouseHover → MouseLeave 是我們只需用兩個,進入和離開既可,
進入元件時變圖示 ,離開元件後再變回
.
privatevoid sgDisX_MouseLeave(object sender, EventArgs e)
{
this.Cursor = System.Windows.Forms.Cursors.Arrow;
this.Text = "MouseLeave";
}
privatevoid sgDisX_MouseEnter(object sender, EventArgs e)
{
if (graph_zoom)
{
this.Cursor = sgDisX.InteractionMouseCursors.ZoomXY;
this.Text = "MouseEnter";
}
}
介紹完畢,收工.