winform实现pictureBox显示成圆形形状,并实现pictureBox透明


背景

使用winform窗体做一个人脸识别的效果,需要使用三个pictureBox来存放gif图,第一个最底下有个圆圈再转,中间显示人脸的图片,第三个显示个来回弹的横线;
样式图片


提示:以下是本篇文章正文内容,下面案例可供参考

一、将pictureBox变成圆形图片?

pictureBox默认是长方形的,要将其变成圆形需要重写这个控件,只需要在formload事件加载这个方法即可

 private void Form1_Load(object sender, EventArgs e)
        {
            GraphicsPath gp = new GraphicsPath();
            gp.AddEllipse(picShow.ClientRectangle);//picShow为控件名字
            Region region = new Region(gp);
            picShow.Region = region;
            gp.Dispose();
            region.Dispose();
            //linePic.Parent = this.picShow;
            }

二、实现pictureBox透明

picturebox直接叠加放置,并设置backcolor为透明并不能实现透明;
需要设置需要透明的控件的parent为上一个picturebox;但有个问题就是坐标不是按照直接放置的做来生成了,需要重新设置下location。至于为什么就不知道了,简单记录下,

 pictureBox2.Parent = this.picShow;// pictureBox2为那个横线的pictuebox
 pictureBox2.Location = new System.Drawing.Point(0, 5);

三、图片裁剪成圆形

如果不需要设置picturebox为圆形看,可以直接裁剪图片为圆形,代码如下:

public Bitmap GetRoundPic(System.Drawing.Image img)
        {
            int width = img.width;
            int height = img.height;
            var length = width;
            if (width > height)
            {
                length = height;
            }
            Rectangle rec = new Rectangle(0, 0, length, length);
            System.Drawing.Size size = new System.Drawing.Size(length, length);
            Bitmap bitmap = new Bitmap(size.Width, size.Height);
            using (Graphics g = Graphics.FromImage(bitmap))
            {
                using (TextureBrush br = new TextureBrush(img, System.Drawing.Drawing2D.WrapMode.Clamp, rec))
                {
                    br.ScaleTransform(bitmap.Width / (float)rec.Width, bitmap.Height / (float)rec.Height);
                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                    g.FillEllipse(br, new Rectangle(System.Drawing.Point.Empty, size));
                }
            }
            return bitmap;
        }
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值