2010-06-28 38 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