设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 102|回复: 3
打印 上一主题 下一主题

程序开发中C#创建不规则窗体代码

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-16 17:41:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下:   
  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);
  }
  }
2#
发表于 2009-12-11 16:05:07 | 只看该作者
不要见一个爱一个,爱的太多,你的爱就要贬值。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-20 00:31 , Processed in 0.114876 second(s), 11 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表