Winform控件优化之圆角按钮1

Winform控件优化之圆角按钮1

Winform中的按钮控件在设计时为了美观通常会考虑使用圆角按钮。本文将介绍Winform控件圆角按钮的实现方法,涉及Winform控件创建、绘制和事件处理等方面。

1. 预备知识

本文需要了解以下知识点:

  • C#基础语法
  • Winform控件的创建和使用
  • GDI+绘图基础知识

2. 创建圆角按钮

首先,在Winform窗体中创建一个Button控件,然后将其FlatStyle属性设置为Flat:

Button button = new Button();
button.FlatStyle = FlatStyle.Flat;

接着,为了使按钮变成圆角,我们需要在按钮的Paint事件中进行绘制。在该事件中,我们可以使用GraphicsPath对象绘制圆角矩形,然后使用Graphics对象填充矩形和绘制按钮文本,代码如下:

private void button_Paint(object sender, PaintEventArgs e)
{
    Button button = sender as Button;
    Graphics g = e.Graphics;
    g.Clear(button.BackColor);
    using (GraphicsPath path = new GraphicsPath())
    {
        path.AddArc(button.ClientRectangle.X, button.ClientRectangle.Y, button.CornerRadius, button.CornerRadius, 180, 90);
        path.AddArc(button.ClientRectangle.X + button.ClientRectangle.Width - button.CornerRadius, button.ClientRectangle.Y, button.CornerRadius, button.CornerRadius, 270, 90);
        path.AddArc(button.ClientRectangle.X + button.ClientRectangle.Width - button.CornerRadius, button.ClientRectangle.Y + button.ClientRectangle.Height - button.CornerRadius, button.CornerRadius, button.CornerRadius, 0, 90);
        path.AddArc(button.ClientRectangle.X, button.ClientRectangle.Y + button.ClientRectangle.Height - button.CornerRadius, button.CornerRadius, button.CornerRadius, 90, 90);
        path.CloseFigure();

        g.FillPath(new SolidBrush(button.BackColor), path);
        if (button.Enabled)
        {
            g.DrawString(button.Text, button.Font, new SolidBrush(button.ForeColor), button.ClientRectangle, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
        }
        else
        {
            g.DrawString(button.Text, button.Font, new SolidBrush(Color.Gray), button.ClientRectangle, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
        }
    }
}

在上述代码中,我们定义了一个名为CornerRadius的属性,用于指定按钮的圆角半径,默认值为5。然后我们绘制了4个圆角弧线和一个矩形,组成了一个圆角矩形。最后使用FillPath方法填充绘制的图形。

3. 设置圆角按钮的样式

除了使用代码进行样式设置之外,我们还可以通过控件的属性设置进行样式设置。例如,我们可以在应用程序的资源文件中定义按钮的圆角样式,如下图所示:

Winform控件优化之圆角按钮1

然后在代码中应用该样式,如下所示:

button.FlatStyle = FlatStyle.Flat;
button.FlatAppearance.BorderSize = 0;
button.BackgroundImage = Properties.Resources.ButtonBackground;
button.BackgroundImageLayout = ImageLayout.Stretch;
button.Cursor = Cursors.Hand;

上述代码中,我们使用了各种属性对控件进行设置,包括背景、边框、光标等。

4. 示例说明

下面分别给出两个Winform控件圆角按钮的实现示例,其中一个是使用代码实现设置按钮样式,另一个是使用资源文件实现按钮样式。

示例一

using System;
using System.Drawing;
using System.Windows.Forms;

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

        private void InitButton1()
        {
            Button button = new Button();
            button.Location = new Point(50, 50);
            button.Size = new Size(100, 50);
            button.FlatStyle = FlatStyle.Flat;
            button.FlatAppearance.BorderSize = 0;
            button.BackColor = Color.MediumSeaGreen;
            button.ForeColor = Color.White;
            button.Font = new Font("Microsoft YaHei", 12);
            button.Text = "Button 1";
            button.Cursor = Cursors.Hand;
            button.CornerRadius = 20;
            button.Paint += button_Paint;
            Controls.Add(button);
        }

        private void button_Paint(object sender, PaintEventArgs e)
        {
            Button button = sender as Button;
            Graphics g = e.Graphics;
            g.Clear(button.BackColor);
            using (GraphicsPath path = new GraphicsPath())
            {
                path.AddArc(button.ClientRectangle.X, button.ClientRectangle.Y, button.CornerRadius, button.CornerRadius, 180, 90);
                path.AddArc(button.ClientRectangle.X + button.ClientRectangle.Width - button.CornerRadius, button.ClientRectangle.Y, button.CornerRadius, button.CornerRadius, 270, 90);
                path.AddArc(button.ClientRectangle.X + button.ClientRectangle.Width - button.CornerRadius, button.ClientRectangle.Y + button.ClientRectangle.Height - button.CornerRadius, button.CornerRadius, button.CornerRadius, 0, 90);
                path.AddArc(button.ClientRectangle.X, button.ClientRectangle.Y + button.ClientRectangle.Height - button.CornerRadius, button.CornerRadius, button.CornerRadius, 90, 90);
                path.CloseFigure();

                g.FillPath(new SolidBrush(button.BackColor), path);
                g.DrawString(button.Text, button.Font, new SolidBrush(button.ForeColor), button.ClientRectangle, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
            }
        }
    }
}

上述代码实现了一个绿色的带圆角的Button控件,如下所示:

Winform控件优化之圆角按钮1

示例二

首先,我们需要在资源文件中定义一张圆角样式的背景图片。接着,在代码中使用该背景图片实现Button控件的样式。

using System;
using System.Drawing;
using System.Windows.Forms;

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

        private void InitButton2()
        {
            Button button = new Button();
            button.Location = new Point(50, 50);
            button.Size = new Size(100, 50);
            button.FlatStyle = FlatStyle.Flat;
            button.FlatAppearance.BorderSize = 0;
            button.BackgroundImage = Properties.Resources.ButtonBackground;
            button.BackgroundImageLayout = ImageLayout.Stretch;
            button.Font = new Font("Microsoft YaHei", 12);
            button.Text = "Button 2";
            button.Cursor = Cursors.Hand;
            button.Paint += button_Paint;
            Controls.Add(button);
        }

        private void button_Paint(object sender, PaintEventArgs e)
        {
            Button button = sender as Button;
            e.Graphics.DrawString(button.Text, button.Font, new SolidBrush(button.ForeColor), button.ClientRectangle, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
        }
    }
}

上述代码实现了一个带圆角的Button控件,使用了定义好的资源文件,如下所示:

Winform控件优化之圆角按钮1

5. 总结

本文介绍了Winform控件圆角按钮的实现方法,并提供了两个示例帮助读者了解如何使用代码和资源文件实现圆角按钮。读者可以根据自己的需要进行选择,使用代码或资源文件实现样式设置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Winform控件优化之圆角按钮1 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • C语言完数的实现示例

    下面是关于“C语言完数的实现示例”的完整攻略。 1. 什么是完数 完数又称为完全数,指一个正整数等于除它本身外其他所有因子之和的数。例如,6是一个完数,因为它的因子为1, 2, 3,而1+2+3=6。 2. 完数的判断方法 要判断一个数是否为完数,通常需要遍历该数的所有因子,将因子加和,再判断和与该数是否相等。以下是一个基本的完数判断方法的示例代码: int…

    other 2023年6月27日
    00
  • 怎样在mac上查看端口号

    以下是关于“怎样在Mac上查看端口号”的完整攻略,包含两个示例。 怎样在Mac上查看端口号 在Mac上,我们可以使用端命令来查看端口号。以下是关于如何查看端口号的详攻略。 1. 使用lsof命令 lsof命令可以列出当前系统打开的文件和网络连接。我们可以使用lsof命令来看端口号。以下是一个示例: lsof -i :8080 在这个示例中,我们使用lsof命…

    other 2023年5月9日
    00
  • 性能测试-详细的 TPS 调优笔记

    性能测试-详细的 TPS 调优笔记 背景 在开发过程中,性能测试是非常重要的一环。而其中 TPS(Transactions Per Second,每秒事务处理数)是衡量系统性能指标的重要参数。在进行性能测试时,调优系统 TPS,可以使得系统在高并发下稳定运行,保证用户体验。 下面是我对 TPS 调优的笔记,分享给各位。 TPS 调优方法 方法一:增加系统资源…

    其他 2023年3月28日
    00
  • PyCharm Terminal终端命令行Shell设置方式

    下面是详细讲解“PyCharm Terminal终端命令行Shell设置方式”的完整攻略: 一、背景说明 在进行Python开发时,终端命令行Shell是必不可少的环境,可以通过Shell快速启动Python解释器,执行Python脚本,安装Python第三方库等操作。而PyCharm是一款非常优秀的Python IDE,拥有强大的代码编辑工具、代码调试工具…

    other 2023年6月26日
    00
  • Servlet从入门到精通(超级详细!)

    Servlet从入门到精通(超级详细!)攻略 什么是Servlet? Servlet(Server Applet)是运行在Web服务器或应用服务器上的程序,用于扩展服务器功能。Servlet的运行是由Servlet容器负责的,Servlet容器负责将请求和响应封装成ServletRequest和ServletResponse,并将它们传递给Servlet进行…

    other 2023年6月27日
    00
  • Go语言七篇入门教程六网络编程

    在Go语言中,网络编程是很重要的一部分,可以帮助我们实现各种网络应用。在这篇教程中,我们将讲解Go语言的网络编程。本文会阐述Go语言网络编程的一些基本知识,如TCP、UDP协议、Socket编程等,可以让读者全面了解网络编程的原理和实现方法。 第一篇:基础知识和基本概念 我们首先需要了解网络编程中一些基本的概念和知识,例如套接字(Socket)、IP地址和端…

    other 2023年6月27日
    00
  • Java Dubbo协议下的服务端线程使用详解

    Java Dubbo协议下的服务端线程使用详解 Dubbo协议 Dubbo 是一个高性能、轻量级的开源Java RPC框架,支持应用间高性能通信、服务治理、容错保障、可扩展性等,已在国内外很多互联网公司大规模使用。 Dubbo协议是Dubbo RPC的一种协议,本质上是一种基于TCP的传输协议。在Dubbo协议下,服务提供方和服务消费方通过TCP建立连接,并…

    other 2023年6月27日
    00
  • qq怎么显示IP地理位置?QQIP地址显示错误怎么办?

    QQ怎么显示IP地理位置? QQ是一款常用的即时通讯软件,它可以显示IP地址的地理位置。下面是详细的攻略: 打开QQ软件并登录账号。 在QQ的主界面上,找到并点击好友列表中的某个好友。 在好友的聊天窗口中,找到并点击好友的头像或昵称。 在弹出的菜单中,选择“查看资料”选项。 在好友的资料页面中,找到并点击“IP地址”或“查看IP”等相关选项。 QQ会显示好友…

    other 2023年7月30日
    00
合作推广
合作推广
分享本页
返回顶部