高分求图片圆角、加边线等效果。

dcren118 2011-08-03 09:44:12
使用了ImageList控件,绑定代码如下ImageList.Images.Add(Image.FromFile("图片路径")); ,想实现的效果是让所有ImageList中的图片都实现四个角是圆角的效果 ,请高手指点 谢谢 !
...全文
247 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaofei830927 2011-08-12
  • 打赏
  • 举报
回复
第一种方法 直接用圆角图片 出图片部分其他地方为透明色
比如用png格式的图片可以做圆角 也可以直接被image加载
第二种方法有些复杂 需要你重绘控件 使图片在控件中呈现圆角 以后即使你改变图片 也会一直保持圆角
比如 重绘一个panel使之圆角且有边线 需要重写重绘方法

举例代码如下

private int Round = 8;

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e); //这里会绘image属性图片

e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

DrawFormBorder(e.Graphics);
}

// 画边框
public void DrawFormBorder(Graphics g)
{
using(GraphicsPath formBorderPath = new GraphicsPath())
{
formBorderPath.AddArc(0, 0, Round, Round, 180, 90);
formBorderPath.AddArc(Width - Round - 1, 0, Round, Round, 270, 90);
formBorderPath.AddArc(Width - Round - 1, Height - Round - 1, Round, Round, 0, 90);
formBorderPath.AddArc(0, Height - Round - 1, Round, Round, 90, 90);

formBorderPath.CloseAllFigures();

using(Pen pen = new Pen(Color.Black))//这里可以改变边框的宽度 pen.Width
{
g.DrawPath(pen, formBorderPath);
}
}
}

//控件大小改变后 重新划定空间区域
protected override void OnResize(System.EventArgs e)
{
base.OnResize(e);

using(GraphicsPath formBorderPath = new GraphicsPath())
{
formBorderPath.AddArc(0, 0, Round, Round, 180, 90);
formBorderPath.AddArc(Width - Round, 0, Round, Round, 270, 90);
formBorderPath.AddArc(Width - Round, Height - Round, Round, Round, 0, 90);
formBorderPath.AddArc(0, Height - Round, Round, Round, 90, 90);

formBorderPath.CloseAllFigures();

this.Region = new Region(formBorderPath);
}

this.Invalidate(true);
}



有些东西要慢慢琢磨的
Just4life 2011-08-12
  • 打赏
  • 举报
回复
重绘图片 想什么样 就什么样
dongxy14 2011-08-12
  • 打赏
  • 举报
回复
读取图片,然后将图片重绘到bitmap上面,最后输出bitmap
dcren118 2011-08-12
  • 打赏
  • 举报
回复
dingdingding
dcren118 2011-08-12
  • 打赏
  • 举报
回复
graphic的clip属性 怎么设置 ?
feixuyue 2011-08-12
  • 打赏
  • 举报
回复
将graphic的clip属性设置成圆角矩形就行了,画出的图形就是圆角了
LMAOhuaNL 2011-08-07
  • 打赏
  • 举报
回复
我也觉得你应该在图片的基础之上去重绘,放到一个圆中,根据调颜色你就可以看出四个角都是圆角
dcren118 2011-08-07
  • 打赏
  • 举报
回复
顶起来。。。。。
  • 打赏
  • 举报
回复
你可以试着把每张图片都用gdi重绘过,把他放在一个圆形中,最终把他输出
wangyue4 2011-08-03
  • 打赏
  • 举报
回复
this.TransparencyKey = System.Drawing.Color.White;
这句话的意思是对本窗体所有白色地方做透明处理。
最后把你的图片改成圆角并且设成圆角设成白色就可以了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧