- 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);
- }
- }
- }
C#创建不规则窗体代码
最新推荐文章于 2024-09-13 15:26:39 发布