可不可以将pictureBox重绘,或者是重写一下变成这样,整个pictureBox都变成圆形,而不是系统的方形? |
|
#1 |
|
#2 |
winform 麻烦,WPF 容易
|
#3 |
windows就根本不存在非矩形的图片
只要是图,就必须是矩形的 既然图片只能是矩形的,那么控件显示的内容当然也只能是由矩形组成的 但是它可以”看起来”是圆形的 |
#4 |
回复3楼: 傻啊, |
#5 |
回复4楼: 人家要的是把pictureBox变成圆的,而不是pictureBox里显示的图像变成圆的 |
#6 |
回复5楼: 看1楼 |
#7 |
看顶楼
1楼的图片明显最外层表示的是个panel,而中间那个圆的才是楼主要的效果 |
#8 |
winform也很简单呀,直接在你的图片上自绘个圆圈,圆圈外围空间填充满颜色不就行了
|
20分
#9 |
当然可以,先看效果
定义一个类 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会出现原有的阴影,图片附上,还请版主赐教!
|
#12 |
回复11楼:
恩~我解决了这个阴影的问题了,把背景改了一下,谢谢大家的帮助!
|