Я использую Silverlight для рисования некоторых фигур и текста поверх изображения. Формы используют общий набор цветов градиента, поэтому у меня есть предопределенный набор GradientStopCollections, который я намеревался использовать для определения кистей, используемых для заполнения фигур. Это работает до тех пор, пока я использую только каждый из GradientStopCollections до одного раза. Если я попытаюсь создать экземпляр LinearGradientBrush с помощью одного из GradientStopCollections во второй раз, он выдает исключение 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, чтобы понять, почему и вернуться к вам. –