在C# winfrom项目,如何将form窗体由矩形绘制成圆形窗体。 |
|
2分 |
建议楼主还是考虑用WPF
|
3分 | |
刚刚看了一个文章讲解github for windows的设计,也是用wpf,但是我没学过,只懂一点点,与winform设计的区别很大么?学习时间需要多久?
|
|
7分 |
http://www.cnblogs.com/haiq/articles/1751777.html
|
3分 |
/// <summary> /// 窗体圆角 /// </summary> /// <param name="sender"></param> private void Type(Control sender) { GraphicsPath oPath = new GraphicsPath(); oPath.AddPolygon( new Point[] { new Point(0, 1), new Point(1, 0), new Point(sender.Width -1, 0), new Point(sender.Width , 1), new Point(sender.Width, sender.Height-2), new Point(sender.Width-1, sender.Height-1), new Point(sender.Width-1, sender.Height), new Point(1, sender.Height), new Point(1, sender.Height-1), new Point(0, sender.Height-2), } ); sender.Region = new Region(oPath); } f.Paint += delegate(object sender, PaintEventArgs e) { Type(f); //窗体头部颜色设置 e.Graphics.FillPolygon(new SolidBrush(HeadColor), new Point[] { new Point(0, 1), new Point(1, 0), new Point(this.Width -1, 0), new Point(this.Width , 1), new Point(this.Width, 50), new Point(0, 50), }); }; 想怎么画就怎么画。 |
运行窗体后,圆形的边框不平滑,有齿轮效果,怎么样做到圆形的边框平整圆滑的效果。
我采用的是圆形图片作为picturebox图形,代码如下,看看怎么修改下。 private void Form1_Load(object sender, EventArgs e) { //程序启动后,窗体在屏幕中央显示 this.Left = (SystemInformation.PrimaryMonitorMaximizedWindowSize.Width – this.Width) / 2; this.Top = (SystemInformation.PrimaryMonitorMaximizedWindowSize.Height – this.Height) / 2; //从指定的位图中获取透明度大于 10 的区域; } /// <summary> |
|
请帮忙看看,谢谢。
|
|
winfrom不行,wpf可以
|
|
有没有其它办法? |
|
SetWindowRgn
|
|
有没有其它办法?
|
|
用第三方界面库可以实现,各种各样的形状和透明都可以。
http://bbs.cskin.net/ 你可以去看看 |
|
winform也是可以的。设置窗体Region就可以了。 |
|
能不能,具体点? |
|
5分 |
/// <summary> /// 窗体圆角 /// </summary> /// <param name="sender"></param> private void Type(Control sender) { GraphicsPath oPath = new GraphicsPath(); oPath.AddPolygon( new Point[] { new Point(0, 1), new Point(1, 0), new Point(sender.Width -1, 0), new Point(sender.Width , 1), new Point(sender.Width, sender.Height-2), new Point(sender.Width-1, sender.Height-1), new Point(sender.Width-1, sender.Height), new Point(1, sender.Height), new Point(1, sender.Height-1), new Point(0, sender.Height-2), } ); sender.Region = new Region(oPath); } f.Paint += delegate(object sender, PaintEventArgs e) { Type(f); //窗体头部颜色设置 e.Graphics.FillPolygon(new SolidBrush(HeadColor), new Point[] { new Point(0, 1), new Point(1, 0), new Point(this.Width -1, 0), new Point(this.Width , 1), new Point(this.Width, 50), new Point(0, 50), }); }; 这个方法不错,可以试一下 |