Страница 1. Использование однородной кисти SolidColorBrush
Далее, по мере выполнения примеров упражнения, мы будем добавлять в каркас все новые страницы, которые построим из расширений библиотечного класса Page, наделив их соответствующими свойствами. Одновременно мы будем задействовать навигационный механизм каркаса, который предоставляет базовый класс NavigationWindow.
Начнем с создания первой страницы, на которой по всей клиентской области будет расположена кнопка. Кнопку будем закрашивать однородным цветом градаций серого, в зависимости от удаления курсора от центра кнопки. Страницу построим вручную как класс-расширение на базе библиотечного класса Page.
- Дополните файл CreateBrushes.cs кодом создания страницы Page1
namespace WpfApp1{ // Класс-расширение страницы Page1 class Page1 : Page { // Создаем и инициализируем поле кисти белым цветом SolidColorBrush brush = new SolidColorBrush(Colors.White); Button btnPage1 = new Button(); public Page1() { this.WindowTitle = "Page1: Кисть SolidColorBrush"; // Создали кнопку btnPage1.Content = "Кнопка"; btnPage1.Background = brush; // Зарегистрировали обработчики btnPage1.Click += new RoutedEventHandler(btnPage1_Click); btnPage1.MouseMove += new MouseEventHandler(btnPage1_MouseMove); this.Content = btnPage1; // Поместили кнопку в страницу } // Меняет цвет фона кнопки на Page1 void btnPage1_MouseMove(object sender, MouseEventArgs e) { // Чистая ширина клиентской области без рамки окна double width = btnPage1.ActualWidth; // Чистая высота клиентской области без рамки и заголовка окна double height = btnPage1.ActualHeight; Point ptMouse = e.GetPosition(btnPage1);// Точка курсора на клиентской области окна Point ptCenter = new Point(width / 2, height / 2);// Центр клиентской области Vector vectMouse = ptMouse - ptCenter;// Отклонение курсора от центра double angle = Math.Atan2(vectMouse.Y, vectMouse.X);// Угол нахождения курсора Vector vectEllipse = new Vector(width / 2 * Math.Cos(angle), height / 2 * Math.Sin(angle));// Вписанный эллипс // Изоклина (в центре кнопки черная), округляется до одного байта Byte byLevel = (byte)(255 * (Math.Min(1, vectMouse.Length / vectEllipse.Length))); Color color = brush.Color;// Привязываем к полю color.R = color.G = color.B = byLevel;// Цвета, пропорциональные изоклине brush.Color = color;// Меняем цвет фона окна изоклиной от равномерного черного цвета } // Переход на следующую страницу void btnPage1_Click(object sender, RoutedEventArgs e) { } }} - Добавьте код создания объекта начальной страницы в конструктор класса каркаса приложения
namespace WpfApp1{ class CreateBrushes : NavigationWindow { // Точка входа [STAThread] // Атрибут для однопоточного приложения public static void Main() { Application app = new Application(); app.Run(new CreateBrushes()); } // Конструктор public CreateBrushes() { this.Width = 300; this.Height = 300; //this.Title = "Каркас приложения Упражнения 1"; //this.ShowsNavigationUI = false;// Скрыть навигационный интерфейс // Создали начальную страницу Page1 page1 = new Page1(); this.Content = page1; // Поместили страницу в каркас } }} - Запустите приложение и вы увидите первую страницу внутри каркаса, на которой расположена кнопка, меняющая градации серого цвета при движении над ней курсора мыши по направлению к центру кнопки
Кнопка нажимается, но ничего не делает, только меняет цвет.
Дата добавления: 2015-04-15; просмотров: 766;