2010-01-15 163 views
2

我在C#.Net 2.0中創建用戶控件。 我必須在這些控件之間應用拖放圖像。 我已經做了拖放效果。如何在C中清除屏幕區域或重繪屏幕#

但問題是,我必須顯示鼠標拖動時的控制運動。 對此,我畫在屏幕上一個矩形ControlDraw.DrawReversibleFrame的幫助()

問題是,在與鼠標移動事件繪製矩形繪製了整個屏幕,因爲屏幕上沒有重繪它在屏幕上存在。

所以,請任何人都可以告訴我如何清除繪製圖形或如何強制重畫屏幕。

+0

您的意思是,當您拖動某個東西並將鼠標移動到控件上時(左鍵向下),您想要看到鼠標正下方的控件上顯示的矩形?那個矩形會隨着鼠標移動,直到你把東西放在它上面? – A9S6

+0

我想拖動控件本身並放在Like Panel上。 因此,爲了顯示控制拖動我想顯示一個矩形作爲控制相同的大小。 – prashant

回答

1

在將新框架繪製到新位置之前,您必須在與之前相同的位置繪製「可反轉」框架以將其反轉。

的僞代碼是:

bool prev_rev_frame = false; 
Rect prev_rev_rect; 

... 

void on_mouse_move() { 
    if(prev_rev_frame) 
    Control.drawReversableFrame(prev_rev_rect); 
    Rect new_rev_rect = .... 
    Control.drawReversableFrame(new_rev_rect); 
    prev_rev_frame = true; 
    prev_rev_rect = new_rev_rect; 
} 

但一般來說,我建議改變鼠標光標拖放圖標或圖像的縮略圖將更爲合適。

+0

感謝Will, ControlPaint.DrawReversibleFrame() - 它在屏幕上繪製一個背景爲背景的框架。 在這裏我沒有問題。 我可以改變鼠標光標,但不是我的要求。 要求是顯示用戶控件正在拖動。 謝謝 – prashant