C# 图片圆角问题,怎么实现图片的四个角真正透明

笨蛋Eric 2011-08-31 04:24:15
现在的问题是能够画出圆角矩形来,但是由于画布是尖角矩形的,设置画布Transparent透明属性,但是得到的图片就是四个角是黑色的,不知为啥不能真正得到一个四个角真正透明的圆角矩形图片。


我是是想画出一个圆角矩形来用图片填充,得到像PS滤镜那样的圆角图片。

不知怎么样才能够填充。。。。。试过graphics.DrawImage方法,但是失败,


不知道哪位高银能指点一下。。。。。
...全文
623 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
笨蛋Eric 2011-09-13
  • 打赏
  • 举报
回复
Z最后还是用8楼哥们的方法,把图片切成圆角的。效果还行。
hhddzz 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hairong00 的回复:]

谢谢啦5楼,RoundStyle 也是自己定义的枚举还是什么呀
[/Quote]
是自定义的
描述哪几个角是圆角
卧_槽 2011-09-09
  • 打赏
  • 举报
回复
Region
不止4个角,你想做个圆的form都行。
sdl2005lyx 2011-09-09
  • 打赏
  • 举报
回复
笨蛋Eric 2011-09-09
  • 打赏
  • 举报
回复
谢谢啦5楼,RoundStyle 也是自己定义的枚举还是什么呀
yangjiaxiu 2011-09-09
  • 打赏
  • 举报
回复
楼主解决了吗?我也有同样的问题
笨蛋Eric 2011-09-08
  • 打赏
  • 举报
回复
我试下嘿嘿。
hhddzz 2011-09-06
  • 打赏
  • 举报
回复
创建一个圆角GraphicsPath
进而创建一个Region
把Graphics的Clip属性设置为这个Region
然后DrawImageUnScaled画上去就行了
注意你画的那张图要把分辨率设置为和原来的图一样,因为DrawImage是按照测量大小绘制的。不把分辨率设为一样会出现留空白或者画不全。

关键代码如下,顺便描了一下边
(PathHelper.CreateRoundRectPath是一个自定义函数,用来创建圆角矩形路径的)
        private Bitmap CreateRoundRectImage(Bitmap bmp,RoundStyle style, int Radius, bool Stroke, Color StrokeColor, int StrokeWidth)
{
Bitmap bp =new Bitmap(bmp.Width,bmp.Height );
bp.SetResolution(bmp.HorizontalResolution, bmp.VerticalResolution);
using (Graphics grfx = Graphics.FromImage(bp))
{
grfx.SmoothingMode = SmoothingMode.HighQuality;
Region rg1 = new Region(PathHelper.CreateRoundRectPath(new Rectangle(0, 0, bmp.Width, bmp.Height),
Radius, style, false));
grfx.Clip = rg1;
grfx.DrawImageUnscaled(bmp, 0, 0);

// 描边
if (Stroke)
{
grfx.ResetClip();
Region rg2 = new Region(PathHelper.CreateRoundRectPath(new Rectangle(StrokeWidth, StrokeWidth, bmp.Width - StrokeWidth * 2, bmp.Height - StrokeWidth * 2),
Radius, style, false));
rg1.Exclude(rg2);

grfx.FillRegion(new SolidBrush(StrokeColor), rg1);
}
}
return bp;
}
isjoe 2011-09-06
  • 打赏
  • 举报
回复
Region属性,赋值为一个圆角矩形区域即可
笨蛋Eric 2011-09-06
  • 打赏
  • 举报
回复
哎 有分都送不出去呀。
笨蛋Eric 2011-08-31
  • 打赏
  • 举报
回复
transparent不就是透明属性嘛
bulebirds 2011-08-31
  • 打赏
  • 举报
回复
应该设置透明背景属性就可以的吧

110,533

社区成员

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

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

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