0
我有一個自定義控件,我用它作爲橡皮筋繪製藍色邊框和半透明中間。我正在處理鼠標向下/移動事件以調整面板大小。當鼠標移動事件被調用時,一切似乎都能正常工作,它全部按照我的預期繪製,但是當鼠標停止移動時,半透明下方的某些自定義控件正在重繪自己。用z順序玩耍什麼都不會做。半透明面板顯示下方的控件
這裏是透明面板:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT
return cp;
}
}
protected override void OnPaint(PaintEventArgs pe)
{
pe.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(128, 101, 135, 196)), this.ClientRectangle);
pe.Graphics.DrawRectangle(Pens.DarkBlue,
pe.ClipRectangle.Left,
pe.ClipRectangle.Top,
this.Width - 1,
this.Height - 1);
}
protected override void OnPaintBackground(PaintEventArgs pevent)
{
//do not allow the background to be painted
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
}
您的控件是否從Panel類派生? – 2011-03-02 15:48:07
不,只是用戶控制 – 2011-03-02 16:22:28
會發生什麼情況是,通過透明控件(無透明控件獲取無效)在油漆底下獲取無效的控件。你想以這種方式實現將是非常困難的。我們在我們的一個項目中進行了全面的測試,並通過在運行時修改對API的調用,完全重定向了WinForms控件的渲染。但這很難,需要很長時間。如果你有這種可能性,你可能需要考慮WPF的這個用例。或者製作UI WPF的一部分並在WinForms中託管它。 – 2011-03-03 00:18:49