C#改变窗口样式

#region 改变窗口样式

        #if !DEBUG

        [DllImport ("User32.dll")]         private static extern IntPtr GetWindowDC(IntPtr hwnd);

        [DllImport ("User32.dll")]         private static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);

        protected  override  void WndProc(ref Message m)         {                 base.WndProc(ref m);                          switch(m.Msg)                 {

                    case 0x86://WM_NCACTIVATE

                        goto case 0x85;

                    case 0x85://WM_NCPAINT                     {                                                           IntPtr hDC = GetWindowDC(m.HWnd);                              //把DC转换为.NET的Graphics就可以很方便地使用Framework提供的绘图功能了                         Graphics gs = Graphics.FromHdc(hDC);

                        处理色彩#region 处理色彩

                        int ibox = 1;

                        if (this.MaximizeBox) ibox ++;                         if (this.MinimizeBox) ibox ++;

                        //得到相关背景图片                         Image imgpm =  Image.FromFile( Application.StartupPath+ @"Main.bmp");                        //gs.DrawImage(imgbg,3,0,this.Width - (ibox * iBoxWidh),SystemInformation.CaptionHeight + 2); //显示

背景图片                         //标题栏显示背景颜色                         int xPos    = this.Width    -    iBoxWidh * ibox - 2 - ibox*3;

                        Rectangle excludeRect;                         //标题栏中不需要填充的位置                         for(int i=0;i<ibox;i++)                         {                             if( i>0)                             {                                 xPos = xPos +  iBoxWidh + 2;                             }                                                            excludeRect = new Rectangle(xPos, 5, iBoxWidh, iBoxWidh+1);                             gs.ExcludeClip(excludeRect);                         }                                                 //背景区域                         Rectangle rBackground = new Rectangle(0,0,this.Width,SystemInformation.CaptionHeight+3);                         //背景颜色 上下渐变                         System.Drawing.Drawing2D.LinearGradientBrush bBackground                             = new System.Drawing.Drawing2D.LinearGradientBrush(rBackground, Color.FromArgb(100,145,175),

Color.FromArgb(45,80,120),LinearGradientMode.Vertical);                           //标题栏填充背景颜色                         gs.FillRectangle(bBackground,rBackground );                         //显示图标文件                      gs.DrawImage(imgpm,4,4,24,24);   

                        #endregion

                        StringFormat strFmt = new StringFormat();

                        //strFmt.Alignment = StringAlignment.Center;                         //strFmt.LineAlignment = StringAlignment.Center;

                        //gs.DrawString(this.Text, this.Font, Brushes.BlanchedAlmond, m_rect, strFmt);                         //设置标题字体                         Font drawFont = new Font("宋体", 10,System.Drawing.FontStyle.Bold);                         //设置标题颜色                         SolidBrush drawBrush = new SolidBrush(Color.White);                                              //重画标题                         gs.DrawString(this.Text, drawFont, drawBrush, 30,8);

                        gs.Dispose();

                        //释放GDI资源

                        ReleaseDC(m.HWnd, hDC);                                                  break;

                    }

                    case 0xA1://WM_NCLBUTTONDOWN                     {                         Point mousePoint = new Point((int)m.LParam);

                        mousePoint.Offset(-this.Left, -this.Top);

                        //if(m_rect.Contains(mousePoint))                         //{                         //                         //   MessageBox.Show("hello");                         //                         //}

                        break;                     }                 }             }                  #endif

        #endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值