C# 开发圆角窗体

因为项目需要做个Winform的随机启动的数据上传工具,用Visual Studio的窗体感觉太丑了,就想进行优化,反正就一个窗体,上面也没啥按钮,就不要标题栏了,就搞一个圆角的窗体好了,搞个漂亮的背景图片。上面搞一个最小化和关闭按钮。把窗体设置为圆角窗口的操作如下:

1、把窗体frmMain的FormBorderStyle属性设置为None,去掉窗体的边框,让窗体成为无边框的窗体。

2、设置窗体的Region属性,该属性设置窗体的有效区域,我们把窗体的有效区域设置为圆角矩形,窗体就变成圆角的。

3、添加两个控件,控制窗体的最小化和关闭。

设置为圆角窗体,主要涉及GDI+中两个重要的类 Graphics和GraphicsPath类,分别位于System.Drawing和System.Drawing.Drawing2D。

接着我们需要这样一个函数 private void SetWindowRegion() 此函数设置窗体有效区域为圆角矩形,以及一个辅助函数 private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)此函数用来创建圆角矩形路径,将在SetWindowRegion()中调用它。

ublic void SetWindowRegion()  
{  
    System.Drawing.Drawing2D.GraphicsPath FormPath;  
    FormPath = new System.Drawing.Drawing2D.GraphicsPath();  
    Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);  
    FormPath = GetRoundedRectPath(rect, 10);  
    this.Region = new Region(FormPath);    
}  
private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)  
{  
    int diameter = radius;  
    Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));  
    GraphicsPath path = new GraphicsPath();    
    // 左上角  
    path.AddArc(arcRect, 180, 90);    
    // 右上角  
    arcRect.X = rect.Right - diameter;  
    path.AddArc(arcRect, 270, 90);    
    // 右下角  
    arcRect.Y = rect.Bottom - diameter;  
    path.AddArc(arcRect, 0, 90);    
    // 左下角  
    arcRect.X = rect.Left;  
    path.AddArc(arcRect, 90, 90);  
    path.CloseFigure();//闭合曲线  
    return path;  
}

在窗体尺寸改变的时候我们需要调用SetWindowRegion()将窗体变成圆角的。

private void frmMain_Resize(object sender, EventArgs e)
{
    SetWindowRegion();
}

设置按钮的形状:

添加两个普通的按钮button,设置按钮的BackColor属性为Transparent,让背景透明,不然按钮的背景色与窗体的图片背景不相符。设置按钮的FlatStyle属性为Flat,同时设置FlatAppearance属性中的BorderSize=0,MouseDownBackColor和MouseOverBackColor的值均为Transparent,防止点击按钮时,颜色变化影响美观。调整按钮的大小和位置即可。最小化和关闭按钮(是右下角托盘,所以没有退出程序)的代码如下:

private void btn_min_Click(object sender, EventArgs e)
{
	this.WindowState = FormWindowState.Minimized;
}
private void btn_close_Click(object sender, EventArgs e)
{
	this.WindowState = FormWindowState.Minimized;
	this.Hide();
}

还可以添加代码,控制鼠标移动到操作按钮上时,改变按钮上文字的颜色,来增加体验。

程序界面如下图

时间: 2024-10-29 23:21:24

C# 开发圆角窗体的相关文章

WPF换肤之一:创建圆角窗体

原文:WPF换肤之一:创建圆角窗体 我们都期望自己的软件能够有一套看上去很吸引人眼球的外衣,使得别人看上去既专业又有美感.这个系列就带领着大家一步一步的讲解如何设计出一套自己的WPF的窗体皮肤,如果文中有任何错误或者不足,还请指出. WPF是微软大战略中的一个重心所在,学习WPF可谓是一举多得:首先,学习WPF可以让你了解SilverLight的80%:其次,XAML语言可以让你快速的入手WCF和WF:更甚者,就是WPF给予DX渲染核心,抛弃了传统WINFORM以GDI+为主的渲染方式,使得界面

WPF制作圆角窗体思路

之前做WPF时想要做一个圆角窗体,在网上找了一些资料,在 “程序诗人” 的博客上就有一篇这样的博文(http://www.cnblogs.com/scy251147/archive/2012/07/25/2609126.html),今天重新看了一遍,又理了一下思路.下面把我看完后的思路写一遍: 1.隐藏掉WPF窗体自带的标题栏,这样才有实现圆角窗体的可能. 2.在主窗体中插入一个Border画圆角,圆角画出来以后,由于主窗体不透明,会看到圆角之外的四个窗体边角,所以需要把主窗体设置为透明,此时只

Delphi组件开发-在窗体标题栏添加按钮

这是一个在窗体标题栏添加自定义按钮的组件(TTitleBarButton)开发实例,标题栏按钮组件TTitleBarButton以TComponent为直接继承对象,它是一个可以在窗体标题栏上显示按钮的组件,像最大化.最小化和关闭按钮等. 1.首先确定组件的属性. 属性是组件的重要组成部分,它相当于组件的门面,因为一旦一个组件被置于窗体中时,用户必然想到去设置组件的各种属性,编写各种事件的处理过程.TTitleBarButton有以下属性: Color:用来决定按钮表面的颜色.Glyph:用来决

度量快速开发平台窗体中定时执行实现思路

度量快速开发平台的智能窗体中,可以实现定时执行代码功能,一个简单的功能是 每隔5秒执行段代码功能,可以利用智能窗体的功能管理来实现. 这样就在窗体运行的时候,实现自动刷新.非常方便. 如果要实现更复杂的定时执行功能,可以借助度量快速开发平台强大的二次开发扩展,直接调用visual .net中的timer组件实现.如下: '挂载C#中的Timer组件.dim timer=CreateObject("System.Windows.Forms.Timer")timer.Interval =

Winform开发之窗体传值

Winform的窗体之间的数据传递是开发的必备技术,下面介绍几种典型的传值方法 1.构造函数传值,但这种方法是单向的(推荐) 上代码,先传值 private void button2_Click(object sender, EventArgs e) { Form3 fr3 = new Form3("要传的值啊"); fr3.ShowDialog(); } 接值,对了,这里需要重载一个Form3的构造函数,然后将拿到的值显示出来 public Form3(string canshu)

VC创建圆角窗体

有时候根据具体需求,我们可能要改变窗口的形状.使用API函数SetWindowRgn可以改变一个窗体的可见范围. 使用API函数CreateRoundRectRgn()函数可以创建一个圆角矩形区域. 图片ID为:IDB_BACKBMP BOOL CDemoDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // w

C#开发Windows窗体应用程序的步骤

使用C#开发应用程序时,一般包括创建项目.界面设计.设置属性.编写程序代码.保存项目.程序运行等6个步骤. 1.创建项目 在Visual Studio2017开发环境中选择"文件"→"新建"→"项目"菜单,弹出"新建项目"对话框,如图8.1所示. 图8.1  "新建项目"对话框 选择"Windows窗体应用(.NET Framework)".输入项目的名称.选择保存路径,然后单击&quo

Winform开发之窗体显示、关闭与资源释放

Winform的窗体涉及到一般窗体(单文档窗体).MDI窗体.窗体之间的关系等,那么如果调用打开新窗体.如何关闭窗体.窗体资源的释放等都关系到软件运行的效率,本文一一介绍 1.窗体的显示 从一个窗体打开另一个窗体,基本会用到两种方法,即Show()和ShowDialog(),前者是一般的窗体,后者是模态窗体. 两种调用是由些许的不同 (1)在调用Form.Show方法后,Show方法后面的代码会立即执行 (2)在调用Form.ShowDialog方法后,写在其后面的程序会在模态窗口关闭后再执行.

VC创建圆角窗体2

为了实现圆角的对话框窗口,这里主要用两个函数, CreateRoundRectRgn,和SetWindowRgn 程序先通过GetWindowRgn函数得到窗口矩形,然后通过CreateRoundRectRgn函数创建一个圆角矩形,最后通过SetWindowRgn函数改变窗口的形状. 具体操作如下: 1  打开"class view",右击"CMyDlg",出现一个菜单,选择"AddWindow Message Handler.." 2  之后在