- •Лабораторная работа: Основы wpf Упражнение 1. Кисти в wpf
- •Создание заготовки приложения
- •Страница 1. Использование однородной кисти SolidColorBrush
- •Страница 2. Использование цветов класса Brushes
- •Страница 3. Использование линейной градиентной кисти LinearGradientBrush
- •Страница 4. Периодическая смена направления градиента
- •Страница 5. Ступенчатая закраска градиентами
- •Страница 6. Закраска радиальным градиентом RadialGradientBrush
- •Упражнение 2. Элементы управления Menu, ToolBar, TabControl, ToolTip
- •Упражнение 3. Элементы управления Thumb, Border, Popup
- •Упражнение 4. Элементы управления ScrollViewer, Viewbox и StackPanel
- •Упражнение 5. Менеджер размещения Canvas
- •Упражнение 6. Менеджеры размещения StackPanel и DockPanel
- •Упражнение 7. Менеджеры размещения WrapPanel и UniformGrid
- •Упражнение 8. Панель Grid
- •Создание заготовки приложения
- •Простое применение Grid
- •Автоматическая подстройка под содержимое слотов
- •Жесткая установка размеров ячеек
- •Задание пропорций
- •Одинаковая подстройка под наибольшее содержимое
- •Выравнивание размера столбцов сетки по ключу группы
- •Связывание столбцов многих сеток из многих групп
- •Объединение ячеек сетки и интерактивный разделитель GridSplitter
- •Контрольное задание
- •Упражнение 9. Разработка собственного менеджера размещения MyPanel
Страница 5. Ступенчатая закраска градиентами
У линейного градиента есть коллекция GradientStops, содержащая объекты GradientStop. Каждый из объектов коллекции задает начальный цвет градиента и правую границу полного перекрытия этим цветом предыдущего. В такой модели дополнительно используются точки границ закраски, определяемые свойствами StartPoint и EndPoint. Для иллюстрации создадим страницу, поместим на нее кнопку и закрасим кнопку вертикальными градиентами.
Создайте новую страницу Page5 в файле CreateBrushes.cs, поместите на нее кнопку и закрасьте вертикальными градиентами с помощью следующего кода
namespace WpfApp1
{
class Page5 : Page
{
public Page5()
{
this.WindowTitle = "Page5: Закраска цветами радуги";
Button btn = new Button();
this.Content = btn;
btn.Content = "Next Page6";
btn.Click += new RoutedEventHandler(btn5_Click);
// Создание и присоединение градиента
LinearGradientBrush brush = new LinearGradientBrush();
btn.Background = brush;
brush.StartPoint = new Point(0, 0);
brush.EndPoint = new Point(1, 0);
// Цвета радуги
brush.GradientStops.Add(new GradientStop(Colors.Red, 0));
brush.GradientStops.Add(new GradientStop(Colors.Orange, .17));
brush.GradientStops.Add(new GradientStop(Colors.Yellow, .33));
brush.GradientStops.Add(new GradientStop(Colors.Green, .5));
brush.GradientStops.Add(new GradientStop(Colors.CornflowerBlue, .67));
brush.GradientStops.Add(new GradientStop(Colors.Blue, .84));
brush.GradientStops.Add(new GradientStop(Colors.BlueViolet, 1));
}
// Переход на следующую страницу
void btn5_Click(object sender, RoutedEventArgs e)
{
}
}
}
Вставьте в обработчик кнопки перехода на следующую страницу в классе Page4 код создания экземпляра Page5
// Переход на следующую страницу
Page5 page5;
void btn4_Click(object sender, RoutedEventArgs e)
{
if (!this.NavigationService.CanGoForward)
page5 = new Page5();// Создаем только один раз
this.NavigationService.Navigate(page5);
}
Запустите приложение и испытайте работу класса Page5, рисующего последовательные переливы цветов радуги
Страница 6. Закраска радиальным градиентом RadialGradientBrush
Радиальный градиент реализуется классом RadialGradientBrush. Следующий пример демонстрирует работу этого градиента
Создайте новую страницу Page6 в файле CreateBrushes.cs и закрасьте ее с помощью следующего кода
namespace WpfApp1
{
class Page6 : Page
{
public Page6()
{
this.WindowTitle = "Page6: Радиальный градиент";
// Создание и присоединение градиента
RadialGradientBrush brush = new RadialGradientBrush();
this.Background = brush;
// Цвета радуги
brush.GradientStops.Add(new GradientStop(Colors.Red, 0));
brush.GradientStops.Add(new GradientStop(Colors.Orange, .17));
brush.GradientStops.Add(new GradientStop(Colors.Yellow, .33));
brush.GradientStops.Add(new GradientStop(Colors.Green, .5));
brush.GradientStops.Add(new GradientStop(Colors.CornflowerBlue, .67));
brush.GradientStops.Add(new GradientStop(Colors.Blue, .84));
brush.GradientStops.Add(new GradientStop(Colors.BlueViolet, 1));
}
}
}
Вставьте в обработчик кнопки перехода на следующую страницу в классе Page5 код создания экземпляра Page6
// Переход на следующую страницу
Page6 page6;
void btn5_Click(object sender, RoutedEventArgs e)
{
if (!this.NavigationService.CanGoForward)
page6 = new Page6();// Создаем только один раз
this.NavigationService.Navigate(page6);
}
Запустите приложение и испытайте работу кисти с радиальным градиентом
