zoukankan      html  css  js  c++  java
  • c# winform 应用编程代码总结 1

    1、渐显的窗体

         放一个定时器Interval 设置为100 , 在响应的函数中添加

            private void Form1_Load(object sender, System.EventArgs e)
    
            {
                this.timer1.Enabled=true;
                this.Opacity=0;
            }
    
            private void timer1_Tick(object sender, System.EventArgs e)
            {
                if(this.Opacity<1)
                {
                    this.Opacity=this.Opacity+0.05;
                }
                else
                {
                    this.timer1.Enabled=false;
                }
    
            }

    2、设置顶级窗口

           把TopMost 、 TopLevel 都设置为true就OK了!

    3、设置一个多边形的窗口

         引入要使用的函数

    [DllImport("gdi32")]
    private static extern IntPtr CreatePolygonRgn(Point[] lpPoint,int nCount,int nPolyFillMode);
    [DllImport("user32")]
    private static extern IntPtr SetWindowRgn(IntPtr hWnd,IntPtr hRgn,bool bRedraw);

           在窗口load的时候设置形状!

                Point[] pt={
                                new Point(this.Width /2,0),
                                new Point(0,this.Height/2),
                                new Point(this.Width/2,this.Height),
                                new Point(this.Width,this.Height/2),
                                new Point(this.Width,0)
                            };
    
                
                IntPtr m_rgn;
                m_rgn=CreatePolygonRgn(pt,5,WINDING);
                SetWindowRgn(this.Handle,m_rgn,true);

    image

    4、设置圆形窗口

            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern IntPtr BeginPath(IntPtr hdc);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern int SetBkMode(IntPtr hdc,int nBkMode);
            const int TRANSPARENT = 1;
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern IntPtr EndPath(IntPtr hdc);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern IntPtr PathToRegion(IntPtr hdc);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern int Ellipse(IntPtr hdc, int X1,int Y1, int X2,int Y2);
            [System.Runtime.InteropServices.DllImport("user32")]
            private static extern IntPtr SetWindowRgn(IntPtr hwnd,IntPtr hRgn,bool bRedraw);
            [System.Runtime.InteropServices.DllImport("user32")]
            private static extern IntPtr GetDC(IntPtr hwnd);
            private void Form1_Load(object sender, System.EventArgs e)
            {
                IntPtr dc;
                IntPtr region;
                dc=GetDC(this.Handle); 
                BeginPath(dc);
                //根据路径创建不规则窗体
                SetBkMode(dc,TRANSPARENT);
                //设置为透明模式
                Ellipse(dc,20,20,220,220);
                EndPath(dc);
                region=PathToRegion(dc);
                SetWindowRgn(this.Handle,region,true);        
            }
    
        const int WM_NCHITTEST = 0x0084;
        const int HTCLIENT = 0x0001;
        const int HTCAPTION = 0x0002;
        protected override void WndProc(ref System.Windows.Forms.Message m)
            {
                switch(m.Msg)
                {
                    case WM_NCHITTEST:
                        base.WndProc(ref m);
                        if (m.Result==(IntPtr)HTCLIENT)
                            m.Result=(IntPtr)HTCAPTION;
                        break;
                    default:
                        base.WndProc(ref m);
                        break;
                }
    
            }
        }

    5 、渐变的窗口背景

          private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
         {
                Graphics g=e.Graphics;
                Color FColor=Color.Blue;
                Color TColor=Color.Yellow;
                Brush b =new LinearGradientBrush(this.ClientRectangle, FColor, TColor, LinearGradientMode.ForwardDiagonal);
                g.FillRectangle(b,this.ClientRectangle);
          }
    
          private void Form1_Resize(object sender, System.EventArgs e)
          {
                this.Invalidate();
          }

    image

    6、无标题窗口的拖动

            [DllImport("user32.dll")]
    
            public static extern bool ReleaseCapture();
            [DllImport("user32.dll")]
            public static extern bool SendMessage(IntPtr hwnd,int wMsg,int wParam,int lParam);
                                                                                                                                                             
            public const int WM_SYSCOMMAND=0x0112;
            public const int SC_MOVE=0xF010;
            public const int HTCAPTION=0x0002;
            
            private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
            {
                ReleaseCapture();
                SendMessage(this.Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0); 
    
            }

    本系列文章是作者学习《Visual C#.NET 应用编程150例》(源码)心得笔记,欢迎转载,请注明原文地址,如有疑问,可以通过 278250658@qq.com 联系作者本人。


    作者:RyanDing


  • 相关阅读:
    DjangoContenttype
    高并发的详解及解决方案
    Django之路由系统
    Django之ORM
    Django form表单
    AJAX
    python之协程
    python八大排序算法
    python之路-进程
    网络基础
  • 原文地址:https://www.cnblogs.com/syxchina/p/2197285.html
Copyright © 2011-2022 走看看