自定义pictureBox 控件 任意形状(圆形)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liutian1234567890/article/details/46990777

现在上班有一个要求,把头像圆形显示,而C# vs 自带的控件都是方形的,下面是根据几个大牛提示改编的,算是实现了,不过还有待改进!代码贴上:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


using System.Drawing.Drawing2D;
using System.Windows.Forms;
using System.Drawing;


namespace NChat.App_Code
{
    class MyPictureBox:PictureBox
    {
        protected override void OnCreateControl()
        {
            Rectangle rec = new Rectangle(0, 0, 72, 72);
            GraphicsPath gp = new GraphicsPath();
            gp.AddEllipse(rec);
            // gp.AddEllipse(this.ClientRectangle);
            Region region = new Region(gp);
            this.Region = region;
            gp.Dispose();
            region.Dispose();
            base.OnCreateControl();
        }
        protected override void OnPaint(PaintEventArgs pe)
        {            
            base.OnPaint(pe);
             Rectangle rec = new Rectangle(0, 0, 72, 72);


            var g = pe.Graphics;
            g.SmoothingMode = SmoothingMode.AntiAlias;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.DrawEllipse(Pens.White, rec);
        }
    }
}


然后在窗体form 里load事件添加 this.myPictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;

设置pictureBox的背景为#fff,则背景透明

这样图片可以圆形居中显示,


展开阅读全文

没有更多推荐了,返回首页