close

在很久很久以前使用VB6的時代,需要寫一些程式碼,才能做出上述的功能,時代來到了NET 2003我還是用代碼,

最近要用了卻找不到代碼,由於程式太多了,不知道放到哪顆硬碟中了.再加上也沒再用2003.

而現階段最新的開發工具已經來到 NET2012.

於是上網找了一下資料,事實告訴我們快失業了.因為ScatterGraph已經內建這個功能了.

Zoom In/Out 使用 Shift+滑鼠滾輪, Pan 使用 Ctrl+滑鼠.就大功告成了.

竟然要沒頭路,這未免也太靠北了.身為資深軟體工程師的我,當然不能這樣就把程式給交出去,理所當然要加些料,

不然老闆認為你上班都在上網.

準備好要秀的資料.

加入一個 ContextMenuStrip 到視窗中.

P2                       

依序加入 None,ZoomXY,PanXY,Restore.

P2   

用滑鼠依序對 “None”,”ZoomXY”,”PanXY”,”Restore” 作連續擊點(double click).

在輸入如下程式碼

P4   

然後連結 scatterGraph ContextMenuStrip.

P5  

就大功告成.

執行畫面如下:按下滑鼠右鍵.

 P6  

如果滑鼠在拉時想要有這種效果.

請服用下面方法.

 P7  

利用短短的程式碼,造就出自己的價值.

事情當然沒有這麼簡單就結束了,在程式還沒變成蝴蝶飛上天之前我們就要把蟲給抓出來.

問題:當我做Zoom動作時,鼠標不會變 P8    ,需要將滑鼠移到這個元件外,再回到此元件,才會改變圖示.

約略看了一下設定,似乎無解,只好從MouseEnter, MouseHover, MouseLeave 這邊下手.

動作依序是MouseEnter MouseHover MouseLeave 是我們只需用兩個,進入和離開既可,

進入元件時變圖示P8   ,離開元件後再變回 P9  .

 

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";

   }

}

介紹完畢,收工.

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 linear 的頭像
    linear

    李泥兒

    linear 發表在 痞客邦 留言(0) 人氣()