這是我個人筆記
可以使用"拖放事件+拖放操作"方式拖動控制元件到新的位置,這有點像在不同資料夾中拖動檔案.
優點:可帶有資源拖放的功能(內容),而不只是拖放"圖形控制元件"(顯示).
缺點:在最後放下時控制元件位置不太精確,如果把控制元件拖到視窗外等於把控制元件丟掉再也無法操作.
(控制元件沒有父級,位置不在遊戲視窗內.但可以透過程式碼新增到父級,並設定位置重新顯示控制元件.)
過程:當滑鼠在控制元件上按下時,記錄滑鼠在控制元件上的本地座標
(MyGeometry為我的幾何圖形,也就是控制元件的一些位置和大小資訊.
透過AbsoluteToLocal獲得滑鼠在控制元件上的位置
透過LocalToAbsolute獲得控制元件在桌面上的位置
透過LocalToViewport獲取控制元件在遊戲視口上的位置),
並設定拖動的觸發條件(DetectDragIfPressed)為用滑鼠左鍵拖動才觸發.
在"拖動事件"中從父級移除(RemoveFromParent) - 建立拖動操作(CreateDragDropOperation)把返回值傳遞給Operation
在"畫布面板"控制元件的"放下事件"中會獲得上面傳遞過來的資料,讀取它並用於顯示,再獲取"滑鼠在視口上的位置"-之前"滑鼠在控制元件上的位置"
就可以把控制元件顯示在滑鼠放下的位置.
CreateDragDropOperation引數說明
Class:一個用於拖放操作的類,可顯示圖示和裝載資源. 必選
Tag:用於傳遞標誌說明,但我用它傳遞"滑鼠在控制元件上的位置". 可選
Payload:需要裝載的資源引用, 可選
DefaultDragVisual:拖動時顯示的圖示(控制元件) 可選
Pivot:樞軸點,如用於旋轉的中心點,但在這裡表示樞軸點跟隨滑鼠 必選
Offset:偏移 拖動時顯示的圖示 位置,值為控制元件大小的比例如Y=-1.0則控制元件就顯示在滑鼠的上方 一般不用改
這是我個人筆記
可以使用"拖放事件+拖放操作"方式拖動控制元件到新的位置,這有點像在不同資料夾中拖動檔案.
優點:可帶有資源拖放的功能(內容),而不只是拖放"圖形控制元件"(顯示).
缺點:在最後放下時控制元件位置不太精確,如果把控制元件拖到視窗外等於把控制元件丟掉再也無法操作.
(控制元件沒有父級,位置不在遊戲視窗內.但可以透過程式碼新增到父級,並設定位置重新顯示控制元件.)
過程:當滑鼠在控制元件上按下時,記錄滑鼠在控制元件上的本地座標
(MyGeometry為我的幾何圖形,也就是控制元件的一些位置和大小資訊.
透過AbsoluteToLocal獲得滑鼠在控制元件上的位置
透過LocalToAbsolute獲得控制元件在桌面上的位置
透過LocalToViewport獲取控制元件在遊戲視口上的位置),
並設定拖動的觸發條件(DetectDragIfPressed)為用滑鼠左鍵拖動才觸發.
在"拖動事件"中從父級移除(RemoveFromParent) - 建立拖動操作(CreateDragDropOperation)把返回值傳遞給Operation
在"畫布面板"控制元件的"放下事件"中會獲得上面傳遞過來的資料,讀取它並用於顯示,再獲取"滑鼠在視口上的位置"-之前"滑鼠在控制元件上的位置"
就可以把控制元件顯示在滑鼠放下的位置.
CreateDragDropOperation引數說明
Class:一個用於拖放操作的類,可顯示圖示和裝載資源. 必選
Tag:用於傳遞標誌說明,但我用它傳遞"滑鼠在控制元件上的位置". 可選
Payload:需要裝載的資源引用, 可選
DefaultDragVisual:拖動時顯示的圖示(控制元件) 可選
Pivot:樞軸點,如用於旋轉的中心點,但在這裡表示樞軸點跟隨滑鼠 必選
Offset:偏移 拖動時顯示的圖示 位置,值為控制元件大小的比例如Y=-1.0則控制元件就顯示在滑鼠的上方 一般不用改