爲了深入瞭解WPF MVVM,我目前的自由時間項目是一個我以前在童年時玩過很多遊戲的「數字」副本。它基本上是一個簡單的難題,人們必須用不同種類的部件填充給定的空間,這樣才能填滿整個空間。但隨着在六角空間的額外扭曲。WPF捕捉控件
只是爲了說明這一點,這是它目前看起來像WPF:
http://img190.imageshack.us/img190/2553/atomgridmolecule.png
所以基本上有一些預定義的塊(如上面的橙色一個),它可以「插入」給定的網格(上面的灰色東西)。
那麼結果可能是這個樣子:
http://img30.imageshack.us/img30/2553/atomgridmolecule.png
我希望用戶(大概只有我^^),以能夠拖動和碎片落入電網。我希望拖動具有正確偏移的自然含義,同時拖動取決於用戶點擊該部分的位置。
網格和分子都是相同的控件,這是一個從WPF Panel類派生的自定義六邊形面板控件。
問題在於如何做「插入」,特別是「拔掉」。
我有我怎樣處理這兩個想法:
- 不僅僅是簡單的顏色的單元網格和隱藏原片
- 臨:中
- 零成本完美對齊電池
- 缺點:
- 如果拖出的話,用正確的鼠標偏移量在正確的位置重新創建該片段似乎不可能?很難做到
- 臨:中
- 捕捉片到電網,並顯示在頂部
- 臨:
- 拖出是一個簡單的拖動操作,就像在
- 缺點:
- 無論如何都必須對準該片與基礎網格,某種搶購
- 無論如何都必須對準該片與基礎網格,某種搶購
- 臨:
所以我應該採取哪種方法?更重要的是,我甚至可以在WPF中實現這個功能?特別是使用乾淨的MVVM方式。
非常感謝您的幫助!任何意見都非常感謝!編輯:
謝謝亞蘭,我也這麼認爲。
但是我現在怎麼實際執行這個?
- 我怎樣才能真正獲得座標?
- 所有的橙色圓圈都是相互關聯的,所以我怎樣才能「移動」或者更好地將它們「插」在一起?
我會這樣做 - 在後面的代碼中,觀察每個橙色圓上的結束鼠標單擊事件,然後將橙色圓圈x,y與所有灰色圓圈x,y的列表進行比較。通過調整橙色圓圈x,y來捕捉到最近的點。 – 2009-07-02 01:52:40