• 大小: 5KB
    文件类型: .cs
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: C#
  • 标签: TextBox  边框  圆角  

资源简介

为Winform中的Textbox添加圆角和边框,圆角大小和边框大小可以设置

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;

namespace WindowsFormsApplicationGDI
{
    [ToolboxItem(true)]
    public class MyTextbox:TextBox
    {
        /// 
        /// 圆角值
        /// 

        [Browsable(true)]
        public int Radius { get; set; } = 5;

        public int BorderWidth { get; set; } = 2;

        public Color BorderColorForMouseHover { get; set; } = SystemColors.ButtonHighlight;

        protected override void onresize(EventArgs e)
        {
            base.onresize(e);
            this.Region= Region = new Region(GetRegionPath());
            
        }
        /// 
        /// 获取窗体有效区域路径
        /// 

        /// 
        private GraphicsPath GetRegionPath()
        {
            var graphicsPath = new GraphicsPath();

            graphicsPath.StartFigure();
            graphicsPath.AddArc(this.ClientRectangle.Left this.ClientRectangle.Top Radius * 2 Radius * 2 180 90);
            graphicsPath.AddArc(this.ClientRectangle.Right - Radius * 2 this.ClientRectangle.Top Radius * 2 Radius * 2 270 90);
            graphicsPath.AddArc(this.ClientRectangle.Right - Radius * 2 this.ClientRectangle.Bottom - Radius * 2 Radius * 2 Radius * 2 0 90);
            graphicsPath.AddArc(this.ClientRectangle.Left this.ClientRectangle.Bottom - Radius * 2 Radius * 2 Radius * 2 90 90);
            graphicsPath.CloseFigure();

            return graphicsPath;
        }
        /// 
        /// 获取重绘边框的路径
        /// 

        /// 
        private GraphicsPath GetBorderPath()
        {     
            var rec = new Rectangle(ClientRectangle.X + 1 ClientRectangle.Y + 1 ClientRectangle.Width - 2 ClientRectangle.Height - 2);

            var graphicsPath = new GraphicsPath();
            graphicsPath.StartFigure();
            graphicsPath.AddArc(rec.Left rec.Top Radius * 2 Radius * 2 180 90);
            graphicsPath.AddArc(rec.

评论

共有 条评论