2010-04-07 86 views
2

我有不同形狀和大小的多邊形。他們有一個堅實的填補,目前是一個堅實的邊界。如何使用GDI +通過C#/ WinForms在多邊形上繪製漸變邊框?

我想給多邊形的邊緣上的漸變來軟化它們。

到目前爲止,我已經使用了LinearGradientBrush和,而它產生的效果Pen是非常有趣的是最肯定不是我想要的審判;)

我已經通過System.Drawing.Drawing2D命名空間看了,但有沒」似乎是任何其他適用於此目的的類別。

我已經搜索過了,我可以找到的文章主要是關於爲矩形創建邊框,這些邊框很容易,或者是無關緊要的。

所以總結一下,有沒有人有辦法使用GDI +在多邊形上繪製漸變邊框?

回答

2

也許屏幕截圖顯示了你以前的嘗試產生了什麼,並且模擬了你想要的幫助?

雖然我懷疑你遇到的問題是梯度的方向和偏移在整個形狀中是一致的,並且不會隨着多邊形的線的方向而改變。您是否看過PathGradientBrush? (Examples)如果你無法達到效果,使用它的筆形狀的筆畫,也許你可以做兩個「填充」,第一個(邊框)略大於第二個(內部) 。

+0

是的,與LinearGradientBrush的問題梯度停留在相同的對齊方式,因此不遵循多邊形的邊緣。 PathGradientBrush可能可以完成這項工作,但通常是在一個多邊形而不是邊界上放置一個漸變,所以要使用它,我必須使用一種算法來擴大多邊形,以便將邊框固定在邊界內。 我目前正在尋找使用PathGradientBrush,但它給我一個「內存不足」的異常3點多邊形,這不鼓勵。 我會堅持下去,謝謝你的建議:) – AndyJ 2010-04-07 13:47:38

1

我想我已經完成了你所要求的,但在我的情況下,我用它來創建文字上的柔和陰影。

我做到以下幾點:

  1. 繪製文本(你的情況: 多邊形)的位圖
  2. 在阿爾法 通道僅
  3. 迭代第2步套用 軟化過濾器 多次需要獲得所需的 漸變寬度
  4. 最後將 結果繪製到結果 位圖/屏幕