C# WinForm 绘制圆角窗体

public void SetWindowRegion()
{
System.Drawing.Drawing2D.GraphicsPath FormPath;
FormPath = new System.Drawing.Drawing2D.GraphicsPath();
Rectangle rect = new Rectangle(0, 22, this.Width, this.Height - 22);//this.Left-10,this.Top-10,this.Width-10,this.Height-10);
    FormPath = GetRoundedRectPath(rect, 30);
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;
}
protected override void OnResize(System.EventArgs e)
{
this.Region = null;
SetWindowRegion();
}

教你一招:构造圆角窗体 
http://topic.csdn.net/t/20041128/19/3596094.html 

增加命名空间:using System.Drawing.Drawing2D; 
添加方法如下:当然各角的点可根据需要确定.

复制  保存

private void Type(Control sender, int p_1, double p_2)
{
GraphicsPath oPath = new GraphicsPath();
oPath.AddClosedCurve(
new Point[] {
new Point(0, sender.Height / p_1),
new Point(sender.Width / p_1, 0),
new Point(sender.Width - sender.Width / p_1, 0),
new Point(sender.Width, sender.Height / p_1),
new Point(sender.Width, sender.Height - sender.Height / p_1),
new Point(sender.Width - sender.Width / p_1, sender.Height),
new Point(sender.Width / p_1, sender.Height),
new Point(0, sender.Height - sender.Height / p_1) },
(float) p_2);
sender.Region = new Region(oPath);
}

在窗体的paint和resize事件中增加:Type(this,20,0.1); 
参数20和0.1也可以根据自己的需要调整到最佳效

时间: 2024-09-24 15:30:04

C# WinForm 绘制圆角窗体的相关文章

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

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

xp-XP环境下winform绘制表格边框有残影

问题描述 XP环境下winform绘制表格边框有残影 用的是.net3.5,在win7及以上版本运行时,没有问题,但是在XP环境下就会出现下面这个问题--边框绘制有残影ps.在绘制表格的时候,刚开始是能够正常绘制出边框线的,但是整个表格绘制完后,边框线就会立马消失 如果此时将窗体最小化,然后再还原,边框就会被绘制出来,但是绘制的边框偏粗和偏黑.另外,也可以打开一个新的其他程序的窗体,在我的程序窗体前左右拖动,边框也会被绘制出来,且效果与在win7下一致. 求助各位大牛帮忙解决一下.

MFC绘制不规则窗体的方法

  本文实例讲述了MFC 绘制不规则窗体的方法.分享给大家供大家参考.具体分析如下: 实现过程: 1.首先创建基于DLG的MFC应用程序,命名为:tryBGDlg,并将DLG的属性设置为:Title Bar :False ,其它设置不变 2.制作两幅图像,其中的一幅黑白图像,是根据播放器外观来制作的,其中白色区域是要保留的最终在桌面上显示的区域.将这两幅图像添加到工程中,第一个ID号设置为IDB_INTERFACE,第二个ID号设置为:IDB_MASK 3.在CtryBGDlg类中添加一个在函数

Photoshop如何绘制圆角矩形

  Photoshop绘制圆角矩形方法:先创建矩形选择,再转为path,在四个角的两边分别加上两个节点,再删去四个角,调一下弧度就行了. 分类: PS入门教程

怎样用Photoshop CC 14.0新功能来绘制圆角矩形

相信大家做设计的时候一般都会用到圆角的图形,比如圆角矩形,又不想切换到Illustrator或者coredraw等软件里,但是 Photoshop CC之前的版本画圆角矩形比较麻烦,还要输入半径一个一个的试,现在Photoshop CC中加入了圆角矩形功能,能让你轻松的绘制圆角形状,放大不失真. 举个按钮的例子: 第一步:选择绘制矩形形状工具 选项栏选择绘制形状,如果想做选区或者路径的话可以选择路径,也可以选择填充像素. 根据需要而定 第二步:在Photoshop CC中绘制矩形,弹出属性面板,

c# winform datagridview 跨窗体传值的问题

问题描述 c# winform datagridview 跨窗体传值的问题 图1 是显示从数据库中拿到 datagridview 中的内容 图2是显示的效果 图三是新窗体打开 (已获取选中行ID) 图四 我怎么选中一行 点击修改 然后把选那行的值 全部显示在新窗体上呢? 解决方案 C#_WinForm窗体传值 解决方案二: 你可以创建一个model,这个model的字段就是你要传的参数值,然后如下:add _add=new add(model _model):就可以了.意思就是利用有参呢构造参数

asp.net 可不可以像winform的模式窗体一样的功能

问题描述 asp.net 可不可以像winform的模式窗体一样的功能 现在用asp.net 读一个大的excel文件.在读到特定的标志后要暂停并弹出一个窗体接受用户的的输入才决定去哪里椟继执行读取这个excel,请问一下asp.net 可不可以做到. 解决方案 可以用div作为遮罩模拟这个效果,不过无法阻止用户F5,为什么会有这么奇葩的需求. 解决方案二: 不可以!也不可现实!呵呵 解决方案三: 可以实现,只是用户体验可能不是很好:楼上说的用div作为遮罩模拟这个效果应该会好一些,实现起来也容

Android,代码绘制圆角及xml设置,效果不同(转角变粗/模糊)

问题描述 Android,代码绘制圆角及xml设置,效果不同(转角变粗/模糊) 在Android中,使用RoundRectShape及Paint绘制textview的圆角背景,转角处变粗/模糊,和使用xml设置效果不同,请问这是为什么呢?该如何解决呢? 谢谢~~ 解决方案 你看看这个动一下有没有去锯齿的属性,就像paint里那个 解决方案二: http://www.cnblogs.com/aimeng/archive/2011/10/10/2206710.html 推荐阅读此文章 解决方案三:

c#-C# winform下父窗体控制子窗体问题

问题描述 C# winform下父窗体控制子窗体问题 现在有一个父窗体,在其中有一个tabcontrol,tabcontrol有很多子窗体,如何在父窗体中点击一个按钮去将当前tabcontrol里子窗体里的东西被执行 解决方案 tabcontrol.selectedtab.controls[控件名] 解决方案二: 通过注册事件来传值 最简单的 解决方案三: tabcontrol.selectedtab.controls[<控件名>]