
用FillRectangle畫了12個方格,也可以理解為12個像素點,如何用滑鼠任意框選1個或多個方格然后拖移到任意位置,而且拖動時帶影片效果,大神們快來指教下。
uj5u.com熱心網友回復:
不用gdi+不行嗎?本身就是個容器的item滑鼠選擇問題,用gdi畫的話,很多邏輯都得自己實作,太麻煩了.uj5u.com熱心網友回復:
這個說白了都是坐標位置的計算1、存盤12個方格的位置和大小
2、MouseDown的時候,判斷在哪個方格內,記錄滑鼠MouseDown的位置
3、滑鼠MouseMove的時候,根據偏移量,給方格的坐標進行重新賦值,再重新繪制即可
uj5u.com熱心網友回復:
你這里僅僅實作了畫圖,這跟拖放什么的沒有任何關系。拖放是利用系統API去回應滑鼠事件,按照事件的型別去處理相應內容,按照你需求,其實就是在滑鼠按下后,繼續處理MouseMove事件,根據滑鼠的位置重新畫圖,你需要定義一個型別來描述這些圖形的各種狀態,如位置、顏色等,然后創建全域的物件,在滑鼠事件中更改這些物件的狀態,再發出重繪通知,重繪界面,這樣基本上就能實作你要的效果了。uj5u.com熱心網友回復:
需要正規開發自定義控制元件。所謂的“GDI+繪圖”通常是指在畫布上畫一些點線面,這類最低級的操作。那么這類東西根本還不懂控制元件開發層面的知識,怎么去套用控制元件通用理念?你要會開發控制元件,開發幾十個上百個控制元件,才能初步架構這種的東西。
而有些人又會說:“用控制元件太慢,不如用 GDI+ 直接在畫布上畫圖運行速度快”,這其實就是悖論!拾取、拖動等等操作本來就是“控制元件設計技術”,如果有人說所有的控制元件都不適合畫圖,那么就等于說所有的圓的東西都是方的東西,就沒有任何定論了。
uj5u.com熱心網友回復:
比如說“重繪”,那么請問重繪什么?有考慮清楚嗎?胡亂在畫布上畫圖,不可能跟幾萬、幾十萬其它可見的控制元件協調一致。比如說你隨便繪制,那么當你“拖動”的時候怎么讓其它控制元件(你寫程式時根本不知道的、將來要開發和添加的成千上萬控制元件實體)的圖形不受影響而能夠重繪,拖動時滑鼠怎么就能“穿透”各種控制元件的背后而不丟失拾取的拖動物件?等等問題。這些都是基本的控制元件知識。沒有控制元件知識就好像小學5年級同學學習大學微積分物理學,是太早了。
uj5u.com熱心網友回復:
https://pan.baidu.com/s/1pib7dSQpp_BekucuLxgbNA提取碼:exw5
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/206239.html
標籤:C#
上一篇:如何給在程式添加廣告鏈接?
下一篇:ASP.NET通過KindEditor編譯器保存到資料庫的圖文內容,來在讀取出來在編譯器上面顯示,圖片不顯示是什么原因?請大佬指教一下
