新微赢技术网

标题: 程序开发中C#创建不规则窗体代码 [打印本页]

作者: 爱我后悔    时间: 2009-3-16 17:41
标题: 程序开发中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);
  }
  }
作者: 日月明    时间: 2009-12-11 16:05
不要见一个爱一个,爱的太多,你的爱就要贬值。




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2