我使用Silverlight在圖像頂部繪製了一些形狀和文本。這些形狀使用一組常用的漸變顏色,所以我有一組預定義的GradientStopCollections,我打算用它來定義用於填充形狀的畫筆。只要我一次只使用每個GradientStopCollections,這就可以工作。如果我第二次嘗試使用其中一個GradientStopCollections實例化LinearGradientBrush,它會引發一個ArgumentException,指出「值不在預期範圍內」。爲什麼重用GradientStopCollection會導致異常? (值不在預期的範圍內)
_yellowFill = new GradientStopCollection();
_yellowFill.Add(new GradientStop(){ Color = Color.FromArgb(128, 255, 255, 0), Offset = 0 });
_yellowFill.Add(new GradientStop() { Color = Color.FromArgb(128, 128, 128, 0), Offset = 1 });
...
_shapeLinearFillBrush = new LinearGradientBrush(_yellowFill, 90);
...
_shapeLinearFillBrush = new LinearGradientBrush(_yellowFill, 90);
上面最後一行將拋出異常。爲什麼拋出這個異常,我如何使用我的GradientStopCollections來定義多個漸變畫筆?
你試過引用集合作爲一個靜態資源,而不是(例如在App.xaml中)? –
@HiTechMagic號我正在動態創建FrameworkElements以放置在畫布中,所以我也在動態創建它們的畫筆(因爲我將稍後單獨修改它們以響應事件)。如果我這樣做會有什麼區別? – xr280xr
只是頭腦風暴......有可能GradientStopCollection()只允許在一個父代中。我將需要深入研究GradientStopCollection的反彙編,以瞭解爲什麼並回饋給您。 –