• winfrom组件圆角


    精简后,就其实一点,只要有paint事件的组件,都可画圆角,没有的外面套一个panel就行了。

    复制代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Gid_1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Draw(Rectangle rectangle, Graphics g, int _radius, bool cusp, Color begin_color, Color end_color)
            {
                int span = 2;
                //抗锯齿
                g.SmoothingMode = SmoothingMode.AntiAlias;
                //渐变填充
                LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(rectangle, begin_color, end_color, LinearGradientMode.Vertical);
                //画尖角
                if (cusp)
                {
                    span = 10;
                    PointF p1 = new PointF(rectangle.Width - 12, rectangle.Y + 10);
                    PointF p2 = new PointF(rectangle.Width - 12, rectangle.Y + 30);
                    PointF p3 = new PointF(rectangle.Width, rectangle.Y + 20);
                    PointF[] ptsArray = { p1, p2, p3 };
                    g.FillPolygon(myLinearGradientBrush, ptsArray);
                }
                //填充
                g.FillPath(myLinearGradientBrush, DrawRoundRect(rectangle.X, rectangle.Y, rectangle.Width - span, rectangle.Height-1, _radius));
            }
            public static GraphicsPath DrawRoundRect(int x, int y, int width, int height, int radius)
            {
                //四边圆角
                GraphicsPath gp = new GraphicsPath();
                gp.AddArc(x, y, radius, radius, 180, 90);
                gp.AddArc(width - radius, y, radius, radius, 270, 90);
                gp.AddArc(width - radius, height - radius, radius, radius, 0, 90);
                gp.AddArc(x, height - radius, radius, radius, 90, 90);
                gp.CloseAllFigures();
                return gp;
            }
    
            private void panel1_Paint(object sender, PaintEventArgs e)
            {
                Draw(e.ClipRectangle, e.Graphics, 18,true, Color.FromArgb(90, 143, 0), Color.FromArgb(41, 67, 0));
                base.OnPaint(e);
                Graphics g = e.Graphics;
                g.DrawString("其实我是个Panel", new Font("微软雅黑", 9, FontStyle.Regular), new SolidBrush(Color.White), new PointF(10, 10));
            }
    
            private void panel2_Paint(object sender, PaintEventArgs e)
            {
                Draw(e.ClipRectangle, e.Graphics, 18, false, Color.FromArgb(113, 113, 113), Color.FromArgb(0, 0, 0));
                base.OnPaint(e);
                Graphics g = e.Graphics;
                g.DrawString("其实我是个Panel", new Font("微软雅黑", 9, FontStyle.Regular), new SolidBrush(Color.White), new PointF(10, 10));
            }
    
            private void button1_Paint(object sender, PaintEventArgs e)
            {
                Draw(e.ClipRectangle, e.Graphics, 18, false, Color.FromArgb(0, 122, 204), Color.FromArgb(8, 39, 57));
                base.OnPaint(e);
                Graphics g = e.Graphics;
                g.DrawString("其实我是个按钮", new Font("微软雅黑", 9, FontStyle.Regular), new SolidBrush(Color.White), new PointF(10, 10));
            }
    
            private void label1_Paint(object sender, PaintEventArgs e)
            {
                Draw(e.ClipRectangle, e.Graphics, 18, false, Color.FromArgb(210, 210, 210), Color.FromArgb(242, 242, 242));
                base.OnPaint(e);
    
                Graphics g = e.Graphics;
                g.DrawString("其实我是Label", new Font("微软雅黑", 9, FontStyle.Regular), new SolidBrush(Color.Black), new PointF(10, 10));
            }
        }
    }
    复制代码

     int _radius 圆的度数

    bool cusp 画不画尖角

    Color begin_color, Color end_color 渐变色的起始和结束颜色

    private void Draw(Rectangle rectangle, Graphics g, int _radius, bool cusp, Color begin_color, Color end_color)
            {.......}

    圆角按钮要设置

    否则4个角还有颜色。

    皆可画圆。

    本文转自:http://www.cnblogs.com/qiaoke/p/6124693.html

  • 相关阅读:
    你真的会玩SQL吗?EXISTS和IN之间的区别
    大数据征信六大难题待解
    大数据征信六大难题待解
    大数据小白的一些浅见
    大数据小白的一些浅见
    spss命令数据整理中compute与record命令的区别
    spss命令数据整理中compute与record命令的区别
    R语言实现分层抽样(Stratified Sampling)以iris数据集为例
    R语言实现分层抽样(Stratified Sampling)以iris数据集为例
    ORA-24247: 网络訪问被訪问控制列表 (ACL) 拒绝
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/6138410.html
Copyright © 2020-2023  润新知