zoukankan      html  css  js  c++  java
  • 今天才发现,网上误人子弟的事还很多关于做不规窗体

    关于不规窗体偶看到两种方法:

    http://tech.ccidnet.com/pub/disp/Article?columnID=294&articleID=25457&pageNO=1

    关键是这几句话:

       Graphics g = e.Graphics;
    Rectangle mainRect = new Rectangle(0, 0, 695, 278);
    Region mainRegion = new Region(mainRect);
    e.Graphics.SetClip(mainRegion, CombineMode.Replace);
        Point point1 = new Point(0, 32);
    Point point2 = new Point(9, 20);
    Point point3 = new Point(21, 13);
    Point point4 = new Point(34, 9);
        // 创建一个以点为元素的数组
    Point[] curvePoints = { point1, point2, point3, point4 };
    // 创建一个GraphicsPath对象并添加一条曲线
    GraphicsPath myPath = new GraphicsPath();
    myPath.AddCurve(curvePoints, 0, 3, 0.8f);
    myPath.AddLine(36, 9, 378, 9);
    point1.X=378;point1.Y=9;
    point2.X=387;point2.Y=5;
    point3.X=394;point3.Y=0;
    Point[] curvePoints2 = { point1, point2, point3 };
    myPath.AddCurve(curvePoints2, 0, 2, 0.8f);
    myPath.AddLine(394, 0, 0, 0);
    Region ExcludeRegion3 = new Region(myPath);
    e.Graphics.ExcludeClip(ExcludeRegion3);
       
    GraphicsPath myPath3 = new GraphicsPath();
    point1.X=0;point1.Y=180;
    point2.X=19;point2.Y=198;
    point3.X=62;point3.Y=204;
    point4.X=83;point4.Y=221;
    Point point5 = new Point(93, 248);
    Point point6 = new Point(102, 267);
    Point point7 = new Point(125, 278);
    Point[] curvePoints3 = { point1, point2, point3, point4,
    point5, point6, point7 };
    myPath3.AddCurve(curvePoints3, 0, 6, 0.8f);
    myPath3.AddLine(125, 278, 90, 300);
    myPath3.AddLine(90, 300, 0, 300);
    Region ExcludeRegion2 = new Region(myPath3);
    e.Graphics.ExcludeClip(ExcludeRegion2);
    point1.X=454;point1.Y=0;
    point2.X=470;point2.Y=12;
    point3.X=481;point3.Y=34;
    Point[] curvePoints4 = { point1, point2, point3 };
    GraphicsPath myPath2 = new GraphicsPath();
    myPath2.AddCurve(curvePoints4, 0, 2, 0.8f);
    myPath2.AddLine(481, 30, 481, 76);
    myPath2.AddLine(481, 76, 495, 76);
    myPath2.AddLine(495, 76, 495, 0);
    Region ExcludeRegion4 = new Region(myPath2);
    e.Graphics.ExcludeClip(ExcludeRegion4);
    GraphicsPath myPath5 = new GraphicsPath();
    point1.X=481;point1.Y=76;
    point2.X=494;point2.Y=115;
    point3.X=481;point3.Y=158;
    Point[] curvePoints5 = { point1, point2, point3 };
    myPath5.AddCurve(curvePoints5, 0, 2, 0.8f);
    myPath5.AddLine(481, 158, 481, 279);
    myPath5.AddLine(481, 255, 495, 279);
    myPath5.AddLine(495, 279, 495, 0);
    Region ExcludeRegion6 = new Region(myPath5);
    e.Graphics.ExcludeClip(ExcludeRegion6);

    point1.X=480;point1.Y=250;
    point2.X=469;point2.Y=264;
    point3.X=446;point3.Y=278;
    Point[] curvePoints6 = { point1, point2, point3 };
    GraphicsPath myPath4 = new GraphicsPath();
    myPath4.AddCurve(curvePoints6, 0, 2, 0.8f);
    myPath4.AddLine(450, 277, 495, 279);
    Region ExcludeRegion5 = new Region(myPath4);
    e.Graphics.ExcludeClip(ExcludeRegion5);

    e.Graphics.DrawImage(img, 0, 0, 695,278);
       
    // 重设剪切好的区域
    e.Graphics.ResetClip();

    和这样一种:
    (最好不要用:为什么,呵呵,用了就知道.)
    http://www.6to23.com/s11/s11d8/s11d8d2/200416113027.htm


  • 相关阅读:
    day24 Pyhton学习 反射
    正则表达式练习
    day23 Pyhton学习 昨日回顾.re模块.序列化模块
    day22 函数整理
    day22 Pyhton学习 re模块和正则表达式
    day21 Pyhton学习 模块
    函数整理
    一个关于浮点数运算需要注意的地方
    关于逻辑运算案例笔记
    数据的表现形式和进制之间的转换
  • 原文地址:https://www.cnblogs.com/sasbya/p/4612.html
Copyright © 2011-2022 走看看