C# 创建 圆角 button

时间: 2023-07-12 15:07:56 浏览: 51
要创建圆角 button,可以使用 C# 的 System.Windows.Forms 命名空间中的 Button 控件,并设置其 FlatStyle 属性为 FlatStyle.Flat,同时设置其 FlatAppearance 属性中的 BorderSize 和 CornerRadius 属性来实现圆角效果。 下面是一个示例代码: ``` using System.Drawing; using System.Windows.Forms; public class RoundButton : Button { public RoundButton() { this.FlatStyle = FlatStyle.Flat; this.FlatAppearance.BorderSize = 0; this.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); this.FlatAppearance.MouseDownBackColor = Color.FromArgb(255, 192, 192, 192); this.FlatAppearance.MouseOverBackColor = Color.FromArgb(255, 224, 224, 224); this.BackColor = Color.FromArgb(255, 255, 255, 255); this.Size = new Size(100, 50); this.CornerRadius = 10; } private int cornerRadius; public int CornerRadius { get { return cornerRadius; } set { cornerRadius = value; this.Invalidate(); } } protected override void OnPaint(PaintEventArgs pevent) { base.OnPaint(pevent); Rectangle rectangle = new Rectangle(0, 0, this.Width - 1, this.Height - 1); GraphicsPath path = GetRoundedRectangle(rectangle, CornerRadius); this.Region = new Region(path); using (Pen pen = new Pen(this.FlatAppearance.BorderColor)) { pevent.Graphics.DrawPath(pen, path); } } private GraphicsPath GetRoundedRectangle(Rectangle rectangle, int cornerRadius) { GraphicsPath path = new GraphicsPath(); path.StartFigure(); path.AddArc(rectangle.X, rectangle.Y, cornerRadius * 2, cornerRadius * 2, 180, 90); path.AddLine(rectangle.X + cornerRadius, rectangle.Y, rectangle.Right - cornerRadius * 2, rectangle.Y); path.AddArc(rectangle.X + rectangle.Width - cornerRadius * 2, rectangle.Y, cornerRadius * 2, cornerRadius * 2, 270, 90); path.AddLine(rectangle.Right, rectangle.Y + cornerRadius * 2, rectangle.Right, rectangle.Bottom - cornerRadius * 2); path.AddArc(rectangle.X + rectangle.Width - cornerRadius * 2, rectangle.Y + rectangle.Height - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 0, 90); path.AddLine(rectangle.Right - cornerRadius * 2, rectangle.Bottom, rectangle.X + cornerRadius * 2, rectangle.Bottom); path.AddArc(rectangle.X, rectangle.Y + rectangle.Height - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 90, 90); path.CloseFigure(); return path; } } ``` 使用 RoundButton 控件时,可以像使用普通的 Button 控件一样进行操作,例如: ``` RoundButton roundButton = new RoundButton(); roundButton.Text = "Click Me"; this.Controls.Add(roundButton); ``` 这样就可以创建一个带有圆角的 button 控件了。

相关推荐

最新推荐

recommend-type

C#动态创建button的方法

主要介绍了C#动态创建button的方法,涉及C#按钮属性动态设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
recommend-type

C# WebService创建、发布、调用的实例讲解

下面小编就为大家分享一篇C# WebService创建、发布、调用的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

C#实现根据实体类自动创建数据库表

本文主要介绍了C#通过自定义特性实现根据实体类自动创建数据库表的方法。具有很好的参考价值,需要的朋友一起来看下吧
recommend-type

详解C# 利用反射根据类名创建类的实例对象

主要介绍了详解C# 利用反射根据类名创建类的实例对象,“反射”其实就是利用程序集的元数据信息,感兴趣的小伙伴们可以参考一下。
recommend-type

C#Button窗体常用属性及事件详解

1.常用属性 Name:名称; BackColor:设置控件背景颜色; Enabled:是否可用; FlayStyle:控件样式; Image:设置控件图像;...在真实的C#开发场景中,我们对于按钮的使用,无非就是使用按钮的name属性、
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。