winform创建不规则窗体的方法

 更新时间:2015年09月07日 15:03:05   作者:我心依旧  
这篇文章主要介绍了winform创建不规则窗体的方法,涉及C#窗体创建的相关参数设置技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了winform创建不规则窗体的方法。分享给大家供大家参考。具体如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Drawing.Drawing2D;
using System.IO;
namespace WindowsApplication2
{
 public partial class Form3 : Form
 {
  public Form3()
  {
   InitializeComponent();
   this.FormBorderStyle = FormBorderStyle.None;
   ColorConverter colorconvert = new ColorConverter();
   this.BackColor = (Color)colorconvert.ConvertFromString("window");
   this.TransparencyKey = (Color)colorconvert.ConvertFromString("window");
  }
  private void button1_Click(object sender, EventArgs e)
  {
   this.Close();
  }
  protected override void OnPaint(PaintEventArgs e)
  {
   Graphics g = e.Graphics;
   Rectangle mainRect = new Rectangle(0, 0, 695, 278);
   Region mainRegion = new Region(mainRect);
   e.Graphics.SetClip(mainRegion, CombineMode.Replace);
   //设置窗体的外观形式
   Point point1 = new Point(0, 32);
   Point point2 = new Point(9, 20);
   Point point3 = new Point(21, 13);
   Point point4 = new Point(34, 9);
   // 创建一个以点为元素的数组
   Point[] curvePoints = { point1, point2, point3, point4 };
   // 创建一个GraphicsPath 对象并添加一条曲线
   GraphicsPath gPath = new GraphicsPath();
   gPath.AddCurve(curvePoints, 0, 3, 0.8f);
   gPath.AddLine(36, 9, 378, 9);
   point1.X = 378; point1.Y = 9;
   point2.X = 387; point2.Y = 5;
   point3.X = 394; point3.Y = 0;
   Point[] curvePoints2 = { point1, point2, point3 };
   gPath.AddCurve(curvePoints2, 0, 2, 0.8f);
   gPath.AddLine(394, 0, 0, 0);
   Region rg = new Region(gPath);
   e.Graphics.ExcludeClip(rg);
  //可以为任意图片
   string str = Directory.GetCurrentDirectory() + "\\2.png";
   Image img = Image.FromFile(str);
   e.Graphics.DrawImage(img, 0, 0, 695, 278);
   // 重设剪切好的区域
   e.Graphics.ResetClip();
  }
 }
}

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • C#编写ActiveX网页截图控件

    C#编写ActiveX网页截图控件

    这篇文章主要介绍了C#编写ActiveX网页截图控件,作为学习C#编写ActiveX的一个简单入门教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • C#动态创建Access数据库及表的方法

    C#动态创建Access数据库及表的方法

    这篇文章主要介绍了C#动态创建Access数据库及表的方法,以实例形式分析了创建access数据库及在access数据库中建表的完整过程,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • C#实现斐波那契数列的几种方法整理

    C#实现斐波那契数列的几种方法整理

    这篇文章主要介绍了C#实现斐波那契数列的几种方法整理,主要介绍了递归,循环,公式和矩阵法等,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • C# DataTable使用方法详解

    C# DataTable使用方法详解

    这篇文章主要为大家详细介绍了C# DataTable的使用方法,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 详解C#批量插入数据到Sqlserver中的四种方式

    详解C#批量插入数据到Sqlserver中的四种方式

    本文主要讲解一下在Sqlserver中批量插入数据。文中大数据批量插入方式一和方式四尽量避免使用,而方式二和方式三都是非常高效的批量插入数据方式,需要的朋友可以看下
    2016-12-12
  • C#中IEnumerable、ICollection、IList、List之间的区别

    C#中IEnumerable、ICollection、IList、List之间的区别

    这篇文章主要介绍了C#中IEnumerable、ICollection、IList、List之间的区别,本文分别分析了它的实现源码,从而总结出了它们之间的关系和不同之处,需要的朋友可以参考下
    2015-06-06
  • C#调用动态库

    C#调用动态库

    本文详细讲解了C#调用动态库的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • [C#].NET中几种Timer的使用实例

    [C#].NET中几种Timer的使用实例

    本篇文章主要介绍了.NET中几种Timer的使用,具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • C#中如何使用redis

    C#中如何使用redis

    这篇文章主要介绍了C#中如何使用redis,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • c#开发的程序安装时动态指定windows服务名称

    c#开发的程序安装时动态指定windows服务名称

    前段时间由于项目的需求,要在Windows里把同样的组件制作成多个不同名称的服务,这些服务完成类似的功能,仅需要修改业务配置文件
    2012-06-06

最新评论