C#如何圆角加入按钮 [英] C# How to Add Round Corner to button

查看:607
本文介绍了C#如何圆角加入按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要关于如何曲线添加到每个角落的帮助。

I need help on how to add curve to each corner.

这是我的code ..

this is my code..

using (Graphics btnG = pevent.Graphics)
using (SolidBrush btnBGSB = new SolidBrush(Color.FromArgb(107, 109, 110)))
using (SolidBrush lblBrush = new SolidBrush(Color.FromArgb(255, 255, 255)))
{
    Rectangle btnBG = new Rectangle(0, 0, this.Width, this.Height);

    btnG.FillRectangle(btnBGSB, btnBG);

    RectangleF lblRec = new RectangleF(0, 0, this.Width - 1, this.Height - 1);
    StringFormat lblSf = new StringFormat();
    lblSf.Alignment = StringAlignment.Center;
    lblSf.LineAlignment = StringAlignment.Center;    

    btnG.DrawString(this.Text, new Font("tahoma", 10.0f, FontStyle.Bold), lblBrush, lblRec, lblSf);
}

这是我的第3天用C#玩..只是我的TCPSocket应用程序的GUI ..:)

this is my 3rd day playing with c#.. just a GUI for my TCPSocket Application.. :)

推荐答案

下面是我使用,使圆角的方法:

here is a method I use to make rounded corners:

    public static void DrawRoundedRectangle(this Graphics g, Color color, Rectangle rec, int radius,
                                            RoundedCorners corners)
    {
        using (var b = new SolidBrush(color))
        {
            int x = rec.X;
            int y = rec.Y;
            int diameter = radius * 2;
            var horiz = new Rectangle(x, y + radius, rec.Width, rec.Height - diameter);
            var vert = new Rectangle(x + radius, y, rec.Width - diameter, rec.Height);

            g.FillRectangle(b, horiz);
            g.FillRectangle(b, vert);

            if ((corners & RoundedCorners.TopLeft) == RoundedCorners.TopLeft)
                g.FillEllipse(b, x, y, diameter, diameter);
            else
                g.FillRectangle(b, x, y, diameter, diameter);

            if ((corners & RoundedCorners.TopRight) == RoundedCorners.TopRight)
                g.FillEllipse(b, x + rec.Width - (diameter + 1), y, diameter, diameter);
            else
                g.FillRectangle(b, x + rec.Width - (diameter + 1), y, diameter, diameter);

            if ((corners & RoundedCorners.BottomLeft) == RoundedCorners.BottomLeft)
                g.FillEllipse(b, x, y + rec.Height - (diameter + 1), diameter, diameter);
            else
                g.FillRectangle(b, x, y + rec.Height - (diameter + 1), diameter, diameter);

            if ((corners & RoundedCorners.BottomRight) == RoundedCorners.BottomRight)
                g.FillEllipse(b, x + rec.Width - (diameter + 1), y + rec.Height - (diameter + 1), diameter, diameter);
            else
                g.FillRectangle(b, x + rec.Width - (diameter + 1), y + rec.Height - (diameter + 1), diameter,
                                diameter);
        }
    }

    public enum RoundedCorners
    {
        None = 0x00,
        TopLeft = 0x02,
        TopRight = 0x04,
        BottomLeft = 0x08,
        BottomRight = 0x10,
        All = 0x1F
    }

这样,你可以指定你想要哪个圆润边角。

That way you can specify which corners you want rounded.

如果你想拥有它周围的边框,使用此方法:

And if you want to have a border around it, use this method:

    public static void DrawRoundedBorder(this Graphics g, Color color, Rectangle rec,
                                         int radius, int borderWidth, RoundedCorners corners)
    {
        using (Bitmap b = new Bitmap(rec.Width, rec.Height))
        using (Graphics gb = Graphics.FromImage(b))
        {
            var gfRec = new Rectangle(0, 0, rec.Width, rec.Height);
            gb.Clear(Color.Green);

            gb.DrawRoundedRectangle(color, gfRec, radius, corners);

            gfRec.Height -= borderWidth << 1;
            gfRec.Width -= borderWidth << 1;
            gfRec.X += borderWidth;
            gfRec.Y += borderWidth;
            gb.DrawRoundedRectangle(Color.Green, gfRec, radius - borderWidth, corners);

            var maskAttr = new ImageAttributes();
            maskAttr.SetColorKey(Color.Green, Color.Green);

            g.DrawImage(b, rec, 0, 0, b.Width, b.Height, GraphicsUnit.Pixel, maskAttr);
        }
    }

这篇关于C#如何圆角加入按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆