陈程的技术博客

  • 关于作者
全栈软件工程师
一个专注于技术研究创新的程序员
  1. 首页
  2. .NET
  3. 正文

用Winform绘制不规则矩形

2016年9月5日 611点热度 0人点赞 0条评论

1.新建DownLayerForm的窗体。

2.定义不规则窗体的点,并在构造函数里面加载这些不规则的点。

3.效果如图所示。

private int layerWidth = 320;

      /// <summary>
      /// 消息框的宽度
      /// </summary>
      public int LayerWidth
      {
          get { return layerWidth; }
          set { layerWidth = value; }
      }

      public DownLayerForm()
      {
          InitializeComponent();
          //创建不规则窗体 
          POINTAPI[] poin;
          poin = new POINTAPI[7];
          poin[0].x = 0;
          poin[0].y = 10;

          poin[1].x = layerWidth / 2 - 10;
          poin[1].y = 10;

          poin[2].x = layerWidth / 2;
          poin[2].y = 0;

          poin[3].x = layerWidth / 2 + 10;
          poin[3].y = 10;

          poin[4].x = layerWidth;
          poin[4].y = 10;

          poin[5].x = layerWidth;
          poin[5].y = 130;

          poin[6].x = 0;
          poin[6].y = 130;
          Boolean flag = true;
          IntPtr hRgn = CreatePolygonRgn(ref poin[0], 8, 1);
          SetWindowRgn(this.Handle, hRgn, ref flag);
          this.BackColor = Color.White;
      }
      [StructLayout(LayoutKind.Sequential)]
      private struct POINTAPI
      {
          internal int x;
          internal int y;
      }
      [DllImport("gdi32.dll")]
      private static extern IntPtr CreatePolygonRgn(ref POINTAPI lpPoint, int nCount, int nPolyFillMode);
      [DllImport("user32.dll")]
      private static extern IntPtr SetWindowRgn(IntPtr hWnd, IntPtr hRgn, ref Boolean bRedraw);
      //设置窗体显示状态 
      [DllImport("user32.dll")]
      private static extern int SetWindowPos(IntPtr hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);

 

 

标签: C# winform
最后更新:2021年4月1日

博主

全栈工程师,侧重项目技术解决方案规划和开发

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

分类
  • .NET (65)
  • docker (3)
  • linux (12)
  • python (20)
  • web (14)
  • 小程序 (4)
  • 数据库 (2)
  • 未分类 (4)
  • 杂七杂八 (10)
标签聚合
python linux winform nginx DevExpress js C# centos
最新 热点 随机
最新 热点 随机
.NET开发手册标准参考 招募兼职前端开发 Centos安装dotnet6环境 VS上切换分支,vs编译运行出现bug,A fatal error was encountered彻底解决方案 用C#封装一个线程安全的缓存器,达到目标定时定量更新入库 C#通过特性的方式去校验指定数据是否为空
DreamSkin自定义美化控件-TreeView控件 docker打包python镜像全教程 用ASP.NET写一个简单的WebAPI 使用NW.js把B/S应用做成跨平台桌面应用 C#异步操作窗体的方法 python 发送邮件

COPYRIGHT © 2021 陈程的技术博客. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS