2010-06-28 121 views
2

我有一个List<Point>多个点。怎样绘制这些点为位图,以获得与此相同:在GDI中绘制带渐变的折线+

http://img291.imageshack.us/img291/4462/outputtz.png

点是已知的,我只需要以某种方式实现这种渐变效果。

请注意,渐变不是径向的,如果将多边形线解开为直线,则会从一端到另一端获得简单的线性渐变。我只需要沿线的“突破点”扭曲线性渐变。

我的当前的解决方案是分开描绘的每一行,在计算正确开始色端色对每一行,所以可以使用LinearGradientBrush然后DrawLine


1)是否有任何其他的解决方案,不是计算的颜色自己?

2)如何绘制圆的线(如图)?我的解决方案是绘制普通的线,每一端都有椭圆,但这些椭圆不会有渐变,所以如果线非常短,就没有渐变。

回答

1

关于圆端,你可以为你设置该属性笔

Graphics g = e.Graphics; 
    Pen p = new Pen(Color.Brown, 15); 

    // round ends 
    p.StartCap = LineCap.Round; 
    p.EndCap = LineCap.Round; 
    g.DrawLine(p, 30, 80, Width - 50, 80);//can be replace with you code 

让你的形象,你可以改变画布笔。

+0

感谢+1,解决了第二个问题。但第一个呢? – Paya 2011-06-02 12:40:39

+0

接受你的答案 - 我相信对于第一个问题没有其他解决方案。 – Paya 2012-09-08 12:58:04

+0

是否尝试单独绘制渐变位图,然后将它与位图进行AND处理,在该位图中以白色绘制线条,其余为黑色,以便显示第一个位图的渐变,这很耗时,但计算起来更方便,而且可以找到Anding的一个快速算法,而不是循环遍历宽度和高度。只要试一试 – 2012-09-24 08:15:13