关于winform 问题 使窗体成圆形问题

MYsce 2018-11-24 10:00:02

  
用下面的代码可以画圆形但是在圆形的边缘会有锯齿,请问还有没有什么办法画圆形也没有锯齿,我的要求是使窗体成圆形

protected override void OnPaint(PaintEventArgs e)
{

base.OnPaint(e);
GraphicsPath path = new GraphicsPath();
path.AddEllipse(0, 0, 400, 400);
this.Region = new Region(path);
}


...全文
749 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-11-28
  • 打赏
  • 举报
回复
锯齿是 Region 产生的,而 Region 的裁剪功能是操作系统提供的,若需要改变这一现状,就必须调用操作系统的 API

使用 TransparencyKey 穿透是不错的选择,但穿透色应是窗体中绝不会出现的颜色,否则就大窟窿小眼的像筛子一样了
至于将图片变成圆形,可通过设置裁剪区或充填画笔来实现
kxyzjm62 2018-11-28
  • 打赏
  • 举报
回复
所说的依据代码不用谢,就是把上面的属性设好,不用点击按钮,直接云心就可以了。
kxyzjm62 2018-11-28
  • 打赏
  • 举报
回复
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.BackColor = Color.White;
this.TransparencyKey = Color.White;
this.pictureBox1.Image = Image.FromFile(System.Environment.CurrentDirectory + "\\tu.jpg");//注意;加载的图片背景必须是白色的

}
}
}
loveljy_19901114 2018-11-27
  • 打赏
  • 举报
回复
抗锯齿也很难消掉你这么大的圆的锯齿,圆小点还好
EdsionWang 2018-11-26
  • 打赏
  • 举报
回复
GDI+带抗锯齿功能,但是用Region作画的话就没这个抗锯齿的功能了 https://blog.csdn.net/propellant_j/article/details/80802631
吹风的兔子 2018-11-26
  • 打赏
  • 举报
回复
这个好像特别难 —— 异形窗体 是无法消除锯齿的。 我们希望:通过边缘半透明的 PNG 实现异形窗体 —— 我试过,2014年试了个月,我这边是 失败了。 楼主如果成功了,希望告知一下。
良朋 2018-11-26
  • 打赏
  • 举报
回复

引用
FormBorderStyle =none
在用一个圆图片还是有4个角,那么怎样呢


图片做出透明的,用ps保存成png格式就行了。
MYsce 2018-11-26
  • 打赏
  • 举报
回复
引用 4 楼 kxyzjm62 的回复:
[quote=引用 3 楼 xian_wwq 的回复:]
可以换个思路
把winform的border全去掉
然后使用一张圆形图片做背景。


支持3楼,一句代码都不用写就可以了[/quote]

引用 3 楼 xian_wwq 的回复:
可以换个思路
把winform的border全去掉
然后使用一张圆形图片做背景。


FormBorderStyle =none
在用一个圆图片还是有4个角,那么怎样呢
kxyzjm62 2018-11-26
  • 打赏
  • 举报
回复
引用 3 楼 xian_wwq 的回复:
可以换个思路
把winform的border全去掉
然后使用一张圆形图片做背景。


支持3楼,一句代码都不用写就可以了
xian_wwq 2018-11-26
  • 打赏
  • 举报
回复
可以换个思路
把winform的border全去掉
然后使用一张圆形图片做背景。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧