C#中实现不规则的按钮

1 篇文章 0 订阅
1 篇文章 0 订阅

在很多的视频播放器中,控制按钮都是不规则的,界面非常友好。在我们很多的WinForm项目中,为了增加界面的效果,有时也想加入一些闪亮的按钮,但光是有好看的图片也未必做出好的效果,在此,介绍一下如果制作一个不规则的按钮控件。

1、考虑如何改变Control.Region,我是使用图片生成一个GraphicsPath,按钮的形态就是这个GraphicsPath了。

        private GraphicsPath GetAutoRgn(Image img, Color transColor)
        {
            int posT = 0;
            int posS = 0;
            Bitmap bm = null;
            bm = new Bitmap(img, this.ClientSize);
            //   Bitmap bm = new Bitmap(this.shapeImage);
            GraphicsPath myGraphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
            //   myGraphicsPath.AddRectangle(new Rectangle(0,0,20,20));
            //   myGraphicsPath.AddRectangle(new Rectangle(20,6,12,12));
            for (int y = 0; y < bm.Height; y++)
            {
                int x = 0;
                while (x < bm.Width)
                {
                    while (x < bm.Width && bm.GetPixel(x, y).ToArgb() == transColor.ToArgb())
                    {
                        x++;
                    }
                    posT = x;      //透明颜色的结束位置,即不透明颜色的起始位置

                    while (x < bm.Width && bm.GetPixel(x, y).ToArgb() != transColor.ToArgb())
                    {
                        x++;
                    }
                    posS = x - 1;      //不透明颜色的结束位置
                    if (posT <= posS)
                    {
                        //合并区域
                        myGraphicsPath.AddRectangle(new Rectangle(posT, y, x - posT, 1));
                    }
                }

            }
            return myGraphicsPath;
        }

生成了GraphicsPath 后,就可以设定现在控件的Region。

this.Region = new Region(gp) 按钮的形状就是图片的形状了。

本控件是从Label继承,利用Label来显示图片,减少开发的工作量,效果图如下(三个按钮)

 

不知怎样上传源文件,有需要的请留言。源代码

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值