pictureBox重写

.Net技术 码拜 9年前 (2015-07-18) 2968次浏览 0个评论

可不可以将pictureBox重绘,或者是重写一下变成这样,整个pictureBox都变成圆形,而不是系统的方形?

#1

pictureBox重写变成这样?可以吗

#2

winform  麻烦,WPF 容易

#3

windows就根本不存在非矩形的图片
只要是图,就必须是矩形的
既然图片只能是矩形的,那么控件显示的内容当然也只能是由矩形组成的

但是它可以”看起来”是圆形的
就是利用png透明通道,把图片的四个角做成透明的

#4

回复3楼:

傻啊,
弄2张照片合成就行了,人家要的也是矩阵的,只是问法不对,你再好好看看人家的图片

#5

回复4楼:

人家要的是把pictureBox变成圆的,而不是pictureBox里显示的图像变成圆的

#6

回复5楼:

看1楼

#7

看顶楼
1楼的图片明显最外层表示的是个panel,而中间那个圆的才是楼主要的效果

#8

winform也很简单呀,直接在你的图片上自绘个圆圈,圆圈外围空间填充满颜色不就行了
20分

#9

当然可以,先看效果
pictureBox重写
定义一个类

    public class MyPic : PictureBox
    {
        protected override void OnCreateControl()
        {            
            GraphicsPath gp = new GraphicsPath();
            gp.AddEllipse(this.ClientRectangle);
            Region region = new Region(gp);
            this.Region = region;
            gp.Dispose();
            region.Dispose();
            base.OnCreateControl();
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            var g = e.Graphics;
            g.SmoothingMode = SmoothingMode.AntiAlias;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.DrawEllipse(Pens.White, this.ClientRectangle); //为了消除锯齿
        }
    }

使用

       public Form1()
        {
            InitializeComponent();

            var pictureBox1 = new MyPic();// PictureBox();
            this.Controls.Add(pictureBox1);
            pictureBox1.Location = new Point(10, 10);
            pictureBox1.Size = new Size(150, 150);
            pictureBox1.Image = Image.FromFile("1_z65443344.jpg");
        }

写到  protected override void OnLoad(EventArgs e) 中去就变形了,不知何故

#10

楼上已解决不过为什么看着楼主的头像好熟悉的样子 这不是以前我的那个 QQ好友列表 控件我ps的默认头像吗。

#11

回复9楼:

谢谢版主,但是有一点瑕疵就是当运行的时候pictureBox会出现原有的阴影,图片附上,还请版主赐教!pictureBox重写

#12

回复11楼:

恩~我解决了这个阴影的问题了,把背景改了一下,谢谢大家的帮助!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明pictureBox重写
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!