|
可不可以将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楼:
恩~我解决了这个阴影的问题了,把背景改了一下,谢谢大家的帮助!
|
变成这样?可以吗
