当前位置:编程学习 > C#/ASP.NET >>

如何渐近填充不规则路径?如1/4圆环,急急急!!!!

本人将管道弯曲处做成Control,但是在矩形客户区内绘制不规则的path时无法实现好的效果,该path类似1/4圆环,要求圆环的边界圆弧为黑色,圆环中间为白色,实现渐进。尝试用以下代码实现,但效果不佳,且path中间有黑易做图域。哪位朋友有好的算法,请分享! 谢谢!
  
int min = Width > Height ? Height : Width;//min:控件width与Height中较小的一个。
GraphicsPath path = new GraphicsPath();
Rectangle rectMax=new Rectangle(0,0,min*2,min*2);
Rectangle rectMin=new Rectangle(min/2,min/2,min,min);
           
path.AddLine(new Point(0,min),new Point(min/2,min));
path.AddArc(rectMin, 180, 90);
path.AddLine(new Point(min, min / 2), new Point(min, 0));
path.AddArc(rectMax, 180, 90);

PathGradientBrush pgb = new PathGradientBrush(path);
pgb.CenterColor = Color.White;
pgb.SurroundColors = new Color[] { Color.Black };


e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.FillPath(pgb, path);
pgb.Dispose();

--------------------编程问答-------------------- [del][/del] --------------------编程问答-------------------- up --------------------编程问答-------------------- 先告诉你,你的PATH是错的,不信的话,在FillPath后面加上

            e.Graphics.DrawPath(Pens.Red, path);
就能看到你的路径不对了

把添加路径那几行改成下面的就可以了


            path.AddLine(new Point(0, min - 1), new Point(min / 2, min - 1));
            path.AddArc(rectMin, 180, 90);
            path.AddLine(new Point(min, min / 2), new Point(min, 0));
            path.AddArc(rectMax, 270, -90);
--------------------编程问答--------------------
我说的可以了只是说PATH对了,并不代表效果已经是你希望那样的。
--------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,