首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问一下UserControl的OnPaint重写的有关问题

2012-05-20 
请教一下UserControl的OnPaint重写的问题我的UserControl,问题在OnPaint事件,不解。C# codenamespace 启动

请教一下UserControl的OnPaint重写的问题
我的UserControl,问题在OnPaint事件,不解。

C# code
namespace 启动系统服务{    [ToolboxBitmap(typeof(PanelAlphaEx))]    public partial class PanelAlphaEx : UserControl    {        public PanelAlphaEx()        {            InitializeComponent();            this.SetStyle(ControlStyles.Opaque, true);            this.CreateControl();            this.SetStyle(ControlStyles.ResizeRedraw, false);        }        #region 透明配置        // 属性设置        private bool _transparentBG = true;        private int _alpha = 125;        [Category("透明层设置"), Description("是否使用透明,默认为True")]        public bool TransparentBG { get { return _transparentBG; } set { _transparentBG = value; } }        [Category("透明层设置"), Description("设置透明度")]        public int Alpha { get { return _alpha; } set { _alpha = value; } }        #endregion        /// <summary>        /// 开启 WS_EX_TRANSPARENT,使控件支持透明        /// </summary>        protected override CreateParams CreateParams        {            get            {                CreateParams cp = base.CreateParams;                //cp.ExStyle |= 0x20;                cp.ExStyle |= 0x00000020;                return cp;            }        }        protected override void OnPaint(PaintEventArgs e)        {            Color drawColor = _transparentBG ? Color.FromArgb(this._alpha, this.BackColor) : this.BackColor;            Pen penBorder = new Pen(drawColor, 0);            SolidBrush brushBgColor = new SolidBrush(drawColor);            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;            e.Graphics.DrawRectangle(penBorder, e.ClipRectangle);            e.Graphics.FillRectangle(brushBgColor, e.ClipRectangle);            base.OnPaint(e);        }    }}

最后这个重写很头疼,功能吧算是可以实现,
就是一隐藏一显示就要重写一次,在VS里失去焦点,得到焦点也要重写一次
窗口还是可以最大化的,最大化以后显示这个userControl时更缓慢了。
然后显示的时候是从上到下逐渐显示,有没有什么办法让他快速而且一下就显示出来的呢?
目前的效果图:


[解决办法]
居然没人回答,我自己回答:我绘制的时候,不填充矩形,不用颜色,反正就是起了遮挡的遮罩层而已,看不见我加个汉字,加个进度条。

热点排行