我有一個Windows窗體應用程序。 在此應用中我得出一些圈子,所以我有自定義類名爲「圓」 是知道要畫自己(在這個類中有一個方法公共無效抽獎(圖形G))將鼠標處理程序添加到c上的自定義對象類中#
現在時形式加載,我得出了一些圈子裏,我想讓用戶可以 能夠拖動圓..
所以我的問題是如何將mouseHandler添加到自定義類圈? 我以爲這個類應該有它自己的mouseHandler,但我不明白 如何做到這一點..
我有一個Windows窗體應用程序。 在此應用中我得出一些圈子,所以我有自定義類名爲「圓」 是知道要畫自己(在這個類中有一個方法公共無效抽獎(圖形G))將鼠標處理程序添加到c上的自定義對象類中#
現在時形式加載,我得出了一些圈子裏,我想讓用戶可以 能夠拖動圓..
所以我的問題是如何將mouseHandler添加到自定義類圈? 我以爲這個類應該有它自己的mouseHandler,但我不明白 如何做到這一點..
讓你的Circle對象直接處理鼠標事件需要它派生自Control類。這將是一個很大的錯誤,控制類有幾個不良的屬性,使它不適合形狀塗鴉。從它是一個矩形窗口開始,並不能很好地支持重疊。這些東西是可以修復的,但是這是相當痛苦的,它只會給昂貴的課程增加昂貴的開銷。
反而讓它只是一個類。用方法bool HitTest(Point pos)
。和一種方法void Move(Size dist)
。並創建另一個名爲ShapeCollection的類來存儲一組形狀。還有一個Paint和一個HitTest方法,它們只是迭代形狀的集合。
您現在可以輕鬆地實現窗體的Paint事件,調用ShapeCollection.Paint方法。您可以實現MouseDown事件,調用HitTest並記住返回true的形狀的索引。並且實現MouseMove事件,在選定的形狀上調用Move並調用Invalidate,以便形狀在新位置繪製自己。
在WPF中更容易,它沒有與Control類相同的問題,並且具有內置的形狀支持。
你的圈子類必須訂閱鼠標事件。 –
因此,mouseEvent應該在表單代碼上,並且當我創建新的「circle」時,我需要向他發送mouseEvent? – Elior