我想在给定的照片上画一个圆环。圆环/环本身应该用透明度绘制。因为没有drawTorus,所以我使用图形路径来获得结果。
到目前为止,这是我的代码:
Image bmp = Bitmap.FromFile(Application.StartupPath + "\\background.jpg");
Graphics g = Graphics.FromImage(bmp);
g.SmoothingMode = SmoothingMode.AntiAlias;
Rectangle r1 = new Rectangle(bmp.Width / 2 - bmp.Height / 2, 0, bmp.Height, bmp.Height);
Rectangle r2 = Rectangle.Inflate(r1, -50, -50);
GraphicsPath p1 = new GraphicsPath();
p1.AddEllipse(r1);
GraphicsPath p2 = new GraphicsPath();
p1.AddEllipse(r2);
Region re = new Region(p1);
re.Xor(p2);
g.FillRegion(new SolidBrush(Color.FromArgb(80,0,0,0)),re);
g.Save();
这个问题是,SmoothingMode被忽略了。你可以在这里看到它:
我读过这是因为Regions不受SmoothingMode参数的影响。
但是如何解决呢?
答案 0 :(得分:2)
使用FillPath,您的问题应该解决。
GraphicsPath path = new GraphicsPath();
path.AddEllipse(r1);
path.AddEllipse(r2);
using(Brush b = new SolidBrush(Color.FromArgb(80,0,0,0)))
g.FillPath(b, path);