c# - 如何在 c# 中圆角按钮的角?
问题描述
我需要圆角现有按钮,而不是在我的 Windows 窗体应用程序中创建新的圆角按钮。我该怎么做。我只能从互联网上找到新创建的按钮代码。
解决方案
抢救旧帖子,您可以编写这个简单的函数来将舍入应用于现有Button
或其他控件..:
void makeRound(Control ctl, int radius)
{
ctl.Paint += (s, e) =>
{
RectangleF Rect = new RectangleF(0, 0, ctl.Width, ctl.Height);
GraphicsPath GraphPath = GetRoundPath(Rect, 20);
ctl.Region = new Region(GraphPath);
using (Pen pen = new Pen(Color.CadetBlue, 1.75f))
{
pen.Alignment = PenAlignment.Inset;
e.Graphics.DrawPath(pen, GraphPath);
}
};
}
GraphicsPath GetRoundPath(RectangleF Rect, int radius)
{
float r2 = radius / 2f;
GraphicsPath GraphPath = new GraphicsPath();
GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90);
GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y);
GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90);
GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2);
GraphPath.AddArc(Rect.X + Rect.Width - radius,
Rect.Y + Rect.Height - radius, radius, radius, 0, 90);
GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height);
GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90);
GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2);
GraphPath.CloseFigure();
return GraphPath;
}
Region
将不允许抗锯齿,因此在圆形边缘周围看起来有点粗糙。
推荐阅读
- typescript - ESLint 问题:Typescript 文件中的文件中不允许使用 JSX
- linux - 在第二个变量linux之后获取行中的单词
- google-sheets - Google Sheets API 的权限较少
- php - 用 Yii 框架连接 SQL Server
- python-3.x - 配置:错误:找不到python3.7解释器
- php - 从 jQuery Ajax 发布时 PHP Json 格式错误
- parameters - 使用 EMCEE 进行星系分布参数估计的问题
- arm - 从应用程序跳转到引导加载程序后获取跳转状态
- wordpress - 网站暂停时,我不断获取缓存页面
- multicast - 使用独立的 infinispan 和 JGroups 不与 UDP 形成集群