| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Получить цвет Border. |
| Автор: CasperSC 5.8.2010, 19:36 | ||||
Здравствуйте. Вот пытаюсь получить цвет элемента Border.
Вообще суть такая: есть окно с сообщением, верхняя его часть должна плавно переходить в цвет основной части окна. То есть в метод SetBorderColor нужно в качестве параметров передавать выбранный цвет (colorGradientStopTop) и цвет основной части окна, конкретно Border'a растянутого на всё окно (colorGradientStopBottom) Что-то типа этого: ![]() |
| Автор: Kefir 5.8.2010, 23:11 | ||
Раз у тебя одноцветная заливка бордера, то это делается так:
|
| Автор: CasperSC 5.8.2010, 23:57 | ||
| Хм, сейчас попробовал получилось. Но я сам делал точно также и у меня вылетело исключение, что не получается преобразовать в Brush в SolidColorBrush, сейчас работает. Может быть я тогда допустил ошибку, не знаю. А нет, вылетело исключение: System.InvalidCastException не обработано пользовательским кодом Message=Не удалось привести тип объекта "System.Windows.Media.LinearGradientBrush" к типу "System.Windows.Media.SolidColorBrush". На строчке:
|
| Автор: Kefir 6.8.2010, 09:13 | ||||
Если у тебя у бордера поставлена заливка сплошным цветом, то тогда Background будет типа SolidColorBrush (я так понял из первого поста). Если же ты поменял заливку со сплошного цвета на градиент, тогда заливка будет типа GradientBrush (если точнее, то или LinearGradientBrush или RadialGradientBrush, унаследованные от GradientBrush - так что приводить лучше к GradientBrush):
GradientStops содержит все остановки градиента, среди которых просто по индексу выбирай свой цвет (у меня в примере я получаю цвет первой остановки градиента). Если же у тебя могут быть оба варианта (одноцветная заливка или же градиент), то можно просто сделать проверку типа:
Опять же - замени индекс [0] на нужный тебе. |
| Автор: CasperSC 6.8.2010, 11:08 | ||
| Спасибо за помощь, попробовал сделать приведение к градиент браш, дык смотрю у меня там 4 градиент стопа, я аж удивился, думаю откуда, ведь заливаю border сплошным цветом, оказалось я перепутал название, вот так работает всё нормально:
Было: this.btnColorBorder.Background; Сейчас: this.windowStiker.borderBackground.Background; Мде, вот это невнимательно я написал, что аж весь вчерашний день недоумевал, почему не работает, когда должно работать. |
| Автор: exBlender 6.8.2010, 19:59 |
| Если о сути, то она вообще такая: никакого мусора с описанием цветов или размеров в C# коде быть не должно. В xaml создаются различные стили Border'ов, а команда из кода только меняет один стиль на другой. |
| Автор: CasperSC 7.8.2010, 07:39 | ||
Тогда получается, мне нужно очень много стилей сделать. Так как я зделал возможность стиль сообщения изменить как угодно пользователю, на любые цвета и прозрачность. |