日期:2014-05-18  浏览次数:20931 次

关于panel的backcolor透明属性的问题
在做一个界面,界面上有很多panel可以拖动,我想在panel上显示局部透明的图片,所以设置了backcolor属性为transparent,这样就可以看到图片透明部分后的主窗体背景了。虽然实现了,但是有一个很严重的问题,就是拖动panel时界面刷新延迟很严重,很卡。不知道怎么解决。O(∩_∩)O谢谢

------解决方案--------------------
透明控件拖到过程中背景在不断变化,要维持透明,需要消耗大量资源,造成闪烁严重。解决方法是要么使用双缓冲;要么在拖到时取消背景透明,拖动结束再透明。
------解决方案--------------------
重写Panel控件
public PanelNew()
: base()
{
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景. 
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲 
this.UpdateStyles();
}