Знакомство с Silverlight
Дополнительные материалы к занятию можно скачать здесь.
Вложенные файлы: Presentation_7.pptx
Вложенные папки: Lecture_7_1, Lecture_7_2, Lecture_7_3
На смену традиционным Windows Forms постепенно приходит технология Windows Presentation Foundation. У Windows Forms за плечами славная история, накоплен огромный объем программного обеспечения. Однако постепенно стали выявляться определенные проблемы.
-
Разнообразие оборудования
В настоящее время под Windows 7 работают самые разнообразные устройства - от персональных компьютеров до нетбуков, существует мобильная версия Windows 7 - Windows Phone 7. Персоналки обычно комплектуются большими мониторами с высоким разрешением, например, 1920 1080, разрешение ноутбуков поменьше, например, 1440 900, разрешение нетбуков и планшетных компьютеров и того меньше. Если оптимизировать традиционный двухмерный интерфейс под одно из этих устройств, то на других устройствах будут видны искажения.
-
Возросшая мощь видеоплат
Даже самая дешевая видеоплата в настоящее время имеет аппаратный ускоритель трехмерной графики. Жизнь не стоит на месте, и то что впечатляло 7-8 лет назад выглядит уже скучно. Пользователям гораздо удобнее пользоваться трехмерными возможностями интерфейса, чего не может дать традиционная технология GDI+.
-
Унификация ПО
Программистам и пользователям хотелось бы иметь такие же возможности веб-приложений, что и у программного обеспечения, написанного для настольных компьютеров. Новая технология WPF позволяет охватить все сегменты рынка - на настольных компьютерах запускаются собственно WPF-приложения, в Интернете - используется адаптированная версия WPF - Silverlight, на мобильных устройствах - также Silverlight и XNA.
Технология WPF дает целый ряд преимуществ.
В основе WPF лежит векторная система визуализации, не зависящая от разрешения и созданная с расчетом на возможности современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая Язык XAML (Extensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трехмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление [21]. Графической технологией, лежащей в основе WPF является DirectX, в отличие от Windows Forms, где используется GDI/GDI+[2]. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.
При разработке WPF-приложений широко применяется язык расширенной разметки для приложений (XAML). XAML представляет собой XML, в котором фактически реализованы классы .NET Framework. Так же реализована модель разделения кода и дизайна, позволяющая кооперироваться программисту и дизайнеру. Кроме того, есть встроенная поддержка стилей элементов, а сами элементы легко разделить на элементы управления второго уровня, которые в свою очередь разлагаются до уровня векторных фигур и свойств/действий [21].
Для работы с WPF требуется любой .NET-совместимый язык. В этот список входит множество языков: C#, VB, C++, Ruby, Python, Delphi (Prism), Lua и многие другие. Для полноценной работы может быть использована как Visual Studio, так и Expression Blend. Впрочем, первая ориентирована на программирование, а вторая - на дизайн и позволяет делать многие вещи, не прибегая к ручному редактированию XAML. Примеры этому - анимация, стилизация, состояния, создание элементов управления и так далее [21].
Рассмотрим несколько примеров создания WPF-приложений.
Упражнение 10.1. Решение квадратного уравнения (WPF)
Создадим приложение Windows Presentation Foundation.
Создаем проект Lecture_7_1.
Приложения wpf содержат два основных файла: MainWindow.xaml и MainWindow.xaml.cs
В окне MainWindow.xaml наберите следующий код:
<Window x:Class="Lecture_7_1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <TextBox Height="23" HorizontalAlignment="Left" Margin="19,20,0,0" VerticalAlignment="Top" Width="120" Name="txtA" /> <TextBox Height="23" HorizontalAlignment="Left" Margin="19,49,0,0" VerticalAlignment="Top" Width="120" Name="txtB" /> <TextBox Height="23" HorizontalAlignment="Left" Margin="19,78,0,0" VerticalAlignment="Top" Width="120" Name="txtC" /> <Label Height="79" HorizontalAlignment="Left" Margin="152,22,0,0" Name="lblResult" VerticalAlignment="Top" Width="304" /> <Button Content="Нажми меня!" Height="23" HorizontalAlignment="Left" Margin="21,117,0,0" Name="myButton" VerticalAlignment="Top" Width="120" Click="myButton_Click" /> </Grid> </Window>
Перейдите в окно MainWindow.xaml.cs и введите следующий код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace Lecture_7_1 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void myButton_Click(object sender, RoutedEventArgs e) { double a, b, c, d, x1, x2; string str; a = System.Convert.ToDouble(txtA.Text); b = System.Convert.ToDouble(txtB.Text); c = System.Convert.ToDouble(txtC.Text); d = System.Math.Pow(b, 2) - 4 * a * c; if (d < 0) { str = "Действительных корней нет!"; } else { x1 = (-b - System.Math.Sqrt(d)) / (2 * a); x2 = =(-b + System.Math.Sqrt(d)) / (2 * a); str = "x1 = " + x1 + "\nx2 = " + x2; } lblResult.Content = str; } } }
Получаем следующий результат: