C#创建不规则窗体
using system; using system.Collections.Generic; using system.ComponentModel; using system.Data; using system.Drawing; using system.Text; using system.windows.Forms; using system.Runtime.InteropServices; namespace APIDemo { public partial class Form1 : Form { [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); public Form1() { InitializeComponent(); //创建不规则窗体 POINTAPI[] poin; poin =new POINTAPI [5]; poin[0].x = 90; poin[0].y = 90; poin[1].x = this.Width; poin[1].y = 0; poin[2].x = Width ; poin[2].y = this.Height/2; poin[3].x = Width / 2; poin[3].y = Height / 2; poin[4].x = 0; poin[4].y = Width; Boolean flag = true; IntPtr hRgn= CreatePolygonRgn(ref poin[0],8,1); SetWindowRgn(this.Handle, hRgn, ref flag ); this.BackColor = Color.BurlyWood; } //设置窗体显示状态 [DllImport("user32.dll")] private static extern int SetWindowPos( IntPtr hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags); private void Start_Btn_Click(object sender, EventArgs e) {//始终显示在前面 SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 1); } private void button1_Click(object sender, EventArgs e) { //最小化始终显示在前面 SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 0); } } }