【问题标题】:Drawing polygonal line with gradient in GDI+在 GDI+ 中绘制带渐变的折线
【发布时间】:2010-06-28 19:07:37
【问题描述】:

我有多个点的List<Point>。如何将这些点绘制到位图中,以获得与此相同的效果:

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

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

请注意渐变不是径向的,如果你将折线解开成一条直线,你会得到从一端到另一端的简单线性渐变。我只需要沿着线的“断点”扭曲这个线性渐变。

我当前的解决方案是分别绘制每条线,同时为每条线计算正确的 start-colorend-color,所以我可以使用 LinearGradientBrush 然后DrawLine.


1) 除了自己计算颜色之外,还有其他解决方案吗?

2) 如何画一条圆端的线(如图所示)?我的解决办法是画一条普通的线,两端都是椭圆,但是那些椭圆没有渐变,所以如果线条很短,就没有渐变。

【问题讨论】:

    标签: c# .net gdi+ drawing gradient


    【解决方案1】:

    关于圆角,你可以为你的 Pen 设置这个属性

        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
    

    所以在你的图像上你可以改变画布笔。

    【讨论】:

    • 谢谢,+1,解决了第二个问题。但是第一个呢?
    • 接受了你的回答——我相信第一个问题没有其他解决方案。
    • 您是否尝试单独绘制渐变位图,然后将其与位图相结合,您将线条绘制为白色,其余部分为黑色,因此将显示第一个位图的渐变,这很耗时,但计算起来更容易,你可以找到一个快速的Anding算法,而不是在宽度和高度上循环。试试吧
    • 但是你建议我应该如何绘制渐变?当然,我所做的不是自己绘制整个渐变 - 通过计算颜色,我指的是每条线的开始和结束颜色,然后分别为每条线使用线性渐变......而不是只为整个渐变使用一个渐变东西,这就是我一直在寻找的东西。
    • 当然,我已经阅读了有关所有 Gradient 类的 MSDN,包括您的文章,但这并没有太大帮助。据我了解,路径渐变不允许您随意制作任何渐变。如果你能够让它做我需要的事情,那么请分享你的代码,因为我做不到。我需要绘制的线不一定要看起来像原始问题中的线,想象一下任何一条线,但从一端到另一端具有相同的渐变蓝到绿。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2023-01-10
    • 2021-12-16
    • 2014-07-18
    • 2016-04-12
    相关资源
    最近更新 更多