一个画任意形状的窗体的例子

发表于:2007-06-30来源:作者:点击数: 标签:
继承System. Windows .Forms.Form窗体类时,重载其画窗体形状的事件OnPaint,就可以画出各种自定义的窗体形状。例子代码是画一个圆形窗体。 protected override void OnPaint(PaintEventArgs e) { GraphicsPath gp = new GraphicsPath(); gp.AddEllipse(20,20,
继承System.Windows.Forms.Form窗体类时,重载其画窗体形状的事件OnPaint,就可以画出各种自定义的窗体形状。例子代码是画一个圆形窗体。
protected override void OnPaint(PaintEventArgs e)
        {
            GraphicsPath gp = new GraphicsPath();
            gp.AddEllipse(20,20,110,110);
            //gp.AddLine(30,30,110,110);
         
            Matrix RotationTransform = new Matrix(1,0, 0,1,1,1);  // rotation matrix
            //Matrix TranslationTransform = new Matrix(1, 0, 0, 1, 0, 0); // translation matrix
            PointF TheRotationPoint = new PointF(110.0f, 110.0f);  // rotation point   
            // rotate the rotation transformation matrix f degrees around TheRotationPoint
            RotationTransform.RotateAt(f, TheRotationPoint);   
            //Call the Transform method of the Graphics Path in order to multiply it by the rotation matrix and rotate the balloon
            gp.Transform(RotationTransform);
            e.Graphics.DrawPath(Pens.Black, gp);
            f=f+10;
            this.Region=new Region(gp);//这句是很重要的,设定窗体显示的区域为你所画的区域。
        }

原文转自:http://www.ltesting.net