На бирже курсовых и дипломных проектов можно найти образцы готовых работ или получить помощь в написании уникальных курсовых работ, дипломов, лабораторных работ, контрольных работ, диссертаций, рефератов. Так же вы мажете самостоятельно повысить уникальность своей работы для прохождения проверки на плагиат всего за несколько минут.

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Использование технологии WPF

Информация:

Тип работы: курсовая работа. Добавлен: 01.11.2012. Сдан: 2012. Страниц: 16. Уникальность по antiplagiat.ru: < 30%

Описание (план):


?Глава 16. Использовании технологии WPF.
Что может нам дать WPF?
До сих пор мы обсуждали возможности программирования на С# либо настольных Windows-приложений (частный случай — консольные приложения), ко­торые пользователи запускают непосредственно (например, ехе-файлы), либо Web-(приложений. выполняющихся внутри браузера. Оба этих приложения имеют свои положительные качества и недостатки. Например, настольные (автономные) при­ложения обладают большей гибкостью и реактивностью, выражающейся, напри­мер, практически в отсутствии задержки при выполнении команд. Даже если вы решаете систему уравнений большой размерности на современном компьютере в Windows-приложении, вы практически не ощущаете "запаздывания" с получением решения системы. В Web-приложении любая отправка данных серверу порождает задержку с ответом. Так, обычный запрос имени учетной записи пользователя (логин) и пароля в процедуре аутентификации пользователя к удаленной базе данных из Web-приложения может затянуться на продолжительное время с учетом скорости пропуска сетевого трафика. С другой стороны, к Web-приложениям могут иметь доступ одновременно многие пользователи.
Однако последнее время мы наблюдаем "сближение" возможностей Windows и Web-приложений. Так, например, благодаря появлению Web-служб Windows-приложения (также как и Web-приложения) получили возможность обрабатывать нe только данные, которые имеются непосредственно на винчестере данного настольного компьютера, но и данные, предоставленные той или иной Web-службой. А помощь (справка — <F1>) в использовании того или иного Windows-приложения часто осуществляется посредством обращения к Интернету. Все большую гибкость Web-приложения получают вследствие применения технологий JavaScript (выпол­нение сценариев на стороне браузера, а не на стороне сервера, что обеспечивает уменьшение "задержек" в работе приложения), благодаря AJAX полное обновле­ние Web-страницы выполняется реже, Flash-технологии обеспечивают яркую и скоростную графику и т. д. Тем самым Web-приложения все больше становятся похожими на настольные приложения.
Технология Windows Presentation Foundation (WPF, графическая презентационная подсистема) задумана компанией Microsoft для того, чтобы еще более уменьшить этот разрыв. Приложение, написанное на основе WPF-технологии (WPF-приложение), способно функционировать как в виде автономного настольного Windows-приложения, так и в виде Web-приложения, выполняющегося в браузере. При этом разработчик WPF-приложения получает возможности мощного графического ядра и программного интерфейса для отрисовки различных графических элементов. Приведем маленький пример по поводу графических возможностей. При разработке Windows-приложений свойство Оpacity (уровень непрозрачности) имеет только вся экранная форма, между тем в WPF-приложении это свойство имеют практически все элементы управления. Создается впечатление, что Microsoft по графическим возможностям в WPF-технологии стремится создать альтернативу Аdobe Flash и Java-апплетам.
Еще одна очень важная особенность WPF-приложений — это возможность их работы в различных операционных средах. То есть разработанное вами на основе WPF-приложения автономное настольное приложение или приложение, выполняемое в браузере (так называемое XAML Browser Applications, ХВАР-приложение), будет работать как в операционной системе Windows, так и в операционных системах семейства UNIX/Linux, операционных системах Solaris и Mac OS X. В результате этого практическая польза для Web-разработчиков состоит в следующем. Мы с вами говорили о том, что Web-хостинг, т. е. услуга по размещению в сети Web-границ, существует в основном под уравлением операционных систем семейства UNIX/Linux. Хостингов на основе ASP.NET на Windows-платформе сравнительно немного. А это ограничивает написание Web-страниц на языках среды Visual Studio. Однако если мы будем писать Web-страницы на основе WPF-технологии, то проблема поиска необходимого хостинга отпадает, поскольку Web-страница, написанная на основе WPF-технологии, будет благополучно работать как на сервере под управлением UNIX/Linux, так и на Windows-сервере.
Пример 119. Создание простейшего WPF-приложения. Компоновка элементов управления с помощью сетки Grid
Поставим следующую задачу: требуется создать интерактивную Web-страницу, содержащую в себе текстовое поле, метку и кнопку. Данное приложение вычисляет значение квадратного корня из числа, введенного пользователем. После щелчка на кнопке приложение производит диагностику введенных символов, и если пользователь действительно ввел число, то на текстовую метку выводим результат извлечения корня. Это совсем маленькая задача, но на ее основе мы сможем рассмотреть все этапы создания WPF-приложения.
Итак, запустим Visual Studio 2010, закажем новый проект шаблона WРF Browser Application С# (из инсталлированных шаблонов Windows), назовем новый проект WpfXbapSqrt. После щелчка на кнопке ОК попадаем на вкладку Page1.xaml. В WPF-приложении, так же как и в ASPX-приложении, имеем файлы разметки, здесь они написаны на языке XAML. Язык XAML (Extensible Application Markup Language) — язык разметки для декларативного программирования WPF-приложений. Так же как и в ASP-технолонии кроме xaml-файлов разметки имеем соответствующие хaml.cs-файлы программной поддержки. На вкладке Page1.xaml размещают элемен­ты управления, которые перетаскивают из панели элементов Toolbox на проектируе­мую Web-страницу. То есть создание WPF-приложений практически не отличается от создания приложений на основе Windows Forms.
Однако, перед тем как размещать и компоновать необходимые элементы, от­кроем вкладку Page1xaml в режиме XAML (листинг 16.1). Обратите внимание на тег <Grid>, его назначение — определять сетку с рядами Row и столбцами Column для размещения в ячейках этой сетки (таблицы) элементов управления. Элемент управления Grid иногда называют контейнером макета страницы. Линии сетки (Grid-линии) делают невидимыми ShowGridLines = false, это позволяет компоно­вать элементы управления в нужном порядке.
Листинг 16.1. Проектируемая Web-страница на языке XAML
<Раgе х:Class="WpfXbapSqrt.Page1"
xmlns="http://schemes.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemes.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="Pagel">
<Grid>
</Grid>
</Page>
Мы намереваемся управлять этой сеткой из соответствующего файла программной разметки и обращаться к обсуждаемой сетке, как к программному объекту. Однако на данный момент у этой сетки нет имени, поэтому в файле разметки для тега <Grid> зададим имя сетки таким образом: <Grid Name="grid1">. Мы будем использовать это имя позже, а сейчас перенесем на форму из панели элементов Тoolbox (эту панель можно вызвать, как обычно, комбинацией клавиш <Ctrl>+ Alt>+<X>) необходимые нам текстовое поле TextBox, метку Label и командную кнопку Button. Можно было бы, просто последовательно дважды щелкая по упомянутым элементам в панели Toolbox, добавлять их на Web-страницу, в этом случае они расположились бы один под другим, как это нам необходимо. Однако хотелось бы иметь гибкую методику размещения элементов управления в любом месте Web-страницы. Эля этого как раз мы и упоминали сетку Grid. Вообще говоря для целей размещения элементов на Web-странице имеем ряд компонентов, входящих в состав WPF:
?                    Canvas — дочерние компоненты могут сами управлять своим расположением
?                    DockPanel — дочерние компоненты выравниваются по краям панели;
?                    Grid — дочерние компоненты располагаются в рядах и колонках;
?                    StackPanel — дочерние компоненты располагаются в одну строку вертикально или горизонтально;
?                    VirtualizingStackPanel — дочерние компоненты выравниваются по одной ли­нии — горизонтальной или вертикальной;
?                    WrapPanel — дочерние компоненты располагаются слева направо и "заворачи­ваются" на следующую строку, когда заканчивается место на текущей строке.
Прежде чем перейти на вкладку программного кода, зададим, что сетка, в ячей-сах которой мы собираемся размещать эти три элемента управления, имеет одну солонку и три ряда. Для этого через контексное меню дизайнера Web-страницы попадаем на вкладку Properties (Свойства). И для сетки grid1 находим свойство СolumnDef initions. Щелкая на многоточии, добавляем (Add) одну колонку. Аналогично в строке свойства RowDefinitions добавляем три ряда. Вообще говоря, можно было задать колонку и три ряда в программном коде, но сделать это в свойтвах сетки Grid совсем просто.
Теперь переходим на вкладку программного кода Pagel.xaml.cs и вводим текст программы, представленный в листинге 16.2.
Листинг 16.2. Содержание файла программной поддержки простейшего WPF-приложения
// Данное WPF-приложение вычисляет значение квадратного корня из числа, введенного пользователем в текстовое
// поле. После щелчка на кнопке приложение производит диагностику введенных символов, и если пользователь
// действительно ввел число, то в текстовую метку выводим результат извлечения корня
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace WpfXbapSqrt
{
/// <summary>
/// Interaction logic for Page1.xaml
/// </surnmary>
public partial class Page1:Page
{
public Page1()
{
InitializeComponent();
// Строка заголовка Web-страницы:
this.WindowTitle = "Извлекаю корень";
// Компонуем элементы управления с помощью сетки Grid:
grid1.Width = 200; grid1.Height = 100;
// Сетку grid1 размещаем в левом верхнем углу Web-страницы:
grid1.НогizontalAlignment = System.Windows.HorizontalAlignment.Left;
grid1.VerticalAlignment = System.Windows.VerticalAlignment.Top;
// Удобно для отладки показать линии сетки:
// grid1.ShowGridLines = true;
// Расстояния от краев Web-страницы до сетки grid1:
grid1.Margin = new Thickness(10, 10,  10,  10);
// Цвет объекта grid1:
grid1.Background = Brushes.LightGray;
// Указываем, что текстовое поле расположить в нулевой колонке в нулевом ряду:
Grid.SetRow(textBox1,  0); Grid.SetColumn(textBox1,  0);
Grid.SetRow(label1,1);     Grid.SetColumn(label1, 0);
Grid.SetRow(button1,- 2);    Grid.SetColumn(button1,  0);
// Текстовое поле располагаем в левом нижнем углу ячейки, сдвинув его на 10 пикселов:
textBox1.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
textBox1.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
textBox1.Margin = new Thickness(10, 0,  0, 0); textBox1.Focus();
label1.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
label1.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
label1.Margin = new Thickness(10,  0, 0,  0);
button1.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
button1.VerticalAlignment = System.Windows.VerticalAlignment.Top;
button1.Margin = new Thickness(10, 0,  0,  0);
button1. Content = "Извлечь корень"; button1 .Width = 120;
label1.Content = "Введите число в текстовое поле";
label1.Foreground = Brushes.Blue; // - синий цвет текста на метке
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Single X; // - из этого числа будем извлекать корень
// Преобразование из строковой переменной в Single:
bool Число_ли = Single.TryParse(textBoxl.Text, System.Globalization.NumberStyles.Number,
System.Globalization.NumberFormatlnfo.Currentlnfо, out X);
// Второй параметр - это разрешенный стиль числа (Integer, шестнадцатиричное число, экспоненциальный
// вид числа и прочее). Третий параметр форматирует значения на основе текущего языка и региональных //параметров из Панели управления | Язык и региональные стандарты число допустимого формата.
// Метод возвращает значение в переменную X.
if  (Число_ли == false)
{    // Если пользователь ввел не число:
Label1.Content = "Следует вводить числа";
Label1.Foreground = Brushes.Red; // - красный цвет текста на метке
return;              // - выход из процедуры
}
Single Y =  (Single)Math.Sqrt(X);        // - извлечение корня
label1.Foreground = Brushes.Blue;      // - синий цвет текста на метке
label1.Content = string.Format("Корень из {0} равен {1:F5}", X, Y);
}
}
}
Как видно из программного кода, задачу компоновки элементов управления в ячейках сетки grid1 решаем сразу после выполнения процедуры InitializeComponent. При обработке события "щелчок на кнопке" button1 прове­ряем, число ли ввел пользователь в текстовое поле, и выводим результат извлече­ния корня в метку label1.
Фрагмент работы данного WPF-приложения представлен на рис. 16.1.

Рис. 16.1. Результат диагностики вводимых данных
Теперь очень интересно проверить, как это WPF-приложение будет работать при размещении его на каком-нибудь хостинге, работающем под управлением ОС UNIX (таких хостингов подавляющее большинство, а хостингов из-под Windows значительно меньше). Мы не случайно в самом начале назвали данный проект WpfXbarSqrt, использовав при этом только английские буквы, поскольку имена файлов в ОС UNIX не должны содержать кириллицы. Файлы, которые следует раз­мещать на хостинге, расположены в папке bin\Debug, этих файлов — четыре, они имеют следующие типы: exe, pdb, xbap и manifest. Это исполняемый файл, он содержит скомпилированный код, манифест приложения содержит метаданные, связанные с приложением, и непосредственно xbap-файл, который открывает браузер. В качестве браузера следует использовать Internet Explorer или Mozilla Firefox с соответствующими плагинами. Убедиться в работоспособности программы можно, открыв решение в папке WpfXbarSqrt.
 
 
 
 
Пример 120. Использование одного из эффектов анимации
Как уже упоминалось, Microsoft стремится по графическим возможностям в WPF-технологии приблизиться к возможностям Adobe Flash. Покажем на следую­щем примере возможность анимации (т. е. способности двигаться) кнопки и изо­бражения при щелчке мышью на них. При щелчке на кнопке она резко расширится, а затем плавно вернется в исходное состояние. Аналогично при щелчке на изображении его размер увеличится с последующим плавным уменьшением до первона­чального. Здесь использована наиболее распространенная техника анимации — это анимация интерполяцией, при которой свойство модифицируется плавно от на­чальной точки до конечной.
Для демонстрации этой возможности запустим Visual Studio 2010, выберем сре­ди инсталлированных шаблонов Windows шаблон WPF Browser Application и назовем его WpfXbapAнимe. Чтобы на вкладке Page1.xaml появились кнопка и изображение, на панели элементов Toolbox дважды щелкнем по элементам управ­ления Button и Image.
Скопируем в папку проекта изображение poryv.png, а затем добавим это изо­бражение в проект командой Project | Add Existing Item. Теперь перейдем на вкладку программного кода Page1.xaml.cs и введем текст программы, представленный в листинге 16.3.
Листинг 16.3. WPF-приложение демонстрирует одну из возможностей анимации
// WPF-приложение выводит на Web-страницу командную кнопку и изображение. При щелчке на кнопке и на
// изображении демонстрируются возможности анимации кнопка расширяется, а затем медленно уменьшается до
// исходных размеров; аналогично поведение изображения
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media.Imaging;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace WpfXbapAниме
{
/// <summary>
/// Interaction logic for Page1.xaml
/// </summary>
public partial class Page1 : Page
{
public Page1()
{
InitializeComponent();
this.WindowTitle = "Анимационный эффект";
button1.Width = 100;
button1.Content = "Привет!";     
button1.Focus();
image1.Source = new Bitmaplmage(new Uri("poryv.png", UriKind.Relative));
image1.Width = 100; image1 .Height = 100;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
var Аниме = new System.Windows.Media.Animation.DoubleAnimation()
// Изменить размер от 160 до 100 пикселов:
Аниме.From = 160; Аниме.То = 100;
// Продолжительность анимационного эффекта 5 секунд:
Аниме.Duration = TimeSpan.FromSeconds(5);
// Начать анимацию:
Button1.BeginAnimation(Button.WidthProperty, Аниме);
}
private void imagel_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{         // Щелчок на изображении:
var Аниме = new System.Windows.Media.Animation.DoubleAnimation();
Аниме.From = 160; Аниме.To = 100;
Аниме.Duration = TimeSpan.FromSeconds(5);
imagel.BeginAnimation(Image.WidthProperty, Аниме);
imagel.BeginAnimation(Image.HeightProperty, Аниме);
}
}
}
Сразу после инициализации компонентов страницы InitializeComponent уста­навливаем ширину кнопки и размеры изображения равными 100 пекселам. Размеры изображения автор взял из его свойств (контекстное меню изображения Свойства | Сводка). При щелчке на кнопке создаваемого WPF-приложения инициализируем новый экземпляр класса DoubleAnimation. Далее указываем, в каких пределах из­менять ширину кнопки и продолжительность процесса анимации, и, наконец, командой BeginAnimation начинаем анимационный эффект с командной кнопкой Button1. Аналогичные установки и команды выполняем при щелчке мышью на изображении, только анимационным преобразованиям подвергаем одновременно ширину и высоту(Height) изображения.
Фрагмент работы программы показан на рис. 16.2.

Рис. 16.2. Изображение плавно уменьшается
Убедиться в работоспособности программы можно, открыв решение в папке WpfХbarАниме.
 
 
 
 
Пример 121. Эффект постепенной замены (прорисовки) одного изображения другим
Создадим WPF-приложение, выполняемое в браузере, содержащее на Web-странице два изображения. В качестве изображений мы выбрали презентационные рисунки автомобилей Chevrolet Cavalier и BMW МЗ. Поскольку расположение их на странице является одинаковым, а также их размеры совпадают, пользователь видит только одно "верхнее" изображение. Таким образом, при загрузке страницы мы видим лишь автомобиль BMW МЗ. При щелчке мышью на видимом изображе­нии оно становится все более прозрачным, постепенно "проявляя" "нижнее" изо­бражение. Анимационный эффект длится пять секунд, в конце которого пользова­тель видит уже автомобиль Chevrolet Cavalier. Повторный щелчок мышью на изображении Chevrolet постепенно "проявляет" опять "верхнее" изображение, и мы вновь имеем честь видеть автомобиль BMW.
Для решения поставленной задачи запустим Visual Studio 2010, выберем среди инсталлированных шаблонов Windows шаблон WPF Browser Application и назо­вем его WpfXbapДвaИзo. Далее, перейдя на вкладку дизайна Page1.xaml, на панели элементов Toolbox дважды щелкнем по элементу Image. Поскольку нам требуются два таких элемента, сделаем это еще раз. Мы можем совершенно не волноваться, как будут расположены эти элементы на Web-странице, и какие их размеры будут заданы, поскольку об этом мы позаботимся в программном коде. Теперь скопируем в папку проекта изображения c1.bmp и c2.bmp (рисунки автомобилей Chevrolet Ca­valier и BMW МЗ), а затем добавим эти изображения в проект командой Project | Add Existing Item. В окне Solution Explorer появятся значки этих двух файлов. Теперь перейдем на вкладку программного кода Page1.xaml.cs и введем текст про­граммы, представленный в листинге 16.4.
Листинг 16.4. Постепенная замена одного изображения другим
// WPF-приложение содержит на Web-странице два изображения. Поскольку месторасположение обоих изображений //задано одинаково, а также совпадают размеры изображений, пользователь будет видеть только второе "верхнее"
// изображение. После щелчка на изображении оно становится все более прозрачным, постепенно "проявляя" тем самым
// "нижнее" изображение. После исчезновения "верхнего" изображения мы будем видеть только "нижнее"изображение.
// При повторном щелчке на изображении, наоборот, прозрачность верхнего изображения постепенно снижается, и в
// конце анимационного эффекта мы опять видим только "верхнее" изображение
using System;
using System. Windows;
using System. Windows .Controls;
using System.Windows.Input;
using System.Windows.Media.Imaging;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace WpfXbapДваИзо
{
/// <summary>
/// Логика взаимодействия для Page1.xaml
/// </summary>
public partial class Page1 : Page
{
bool Флажок = false;
public Page1()
{
InitializeComponent();
this.WindowTitle = "Щелкни на изображении";
// Изображение автомобиля Chevrolet Cavalier:             
image1.Source = new Bitmaplmage(new Uri("c1.bmp", UriKind.Relative));
// Изображение автомобиля BMW M3:
image2.Source = new Bitmaplmage(new Uri(“c2.bmp", UriKind.Relative));
// Размеры изображений:
Image1.Width = 591; image1.Height = 258;
image2.Width = 591; image2.Height = 258;
// Расстояния от краев Web-страницы до сетки Grid:
Image1.Margin = new Thickness(10,  10,  0, 0) ;
image2 .Margin = new Thickness (10,  10,  0, 0);
// Присоединяем один обработчик двух событий:
Image1.MouseDown += new MouseButtonEventHandler(image_MouseDown);
image2.MouseDown += new MouseButtonEventHandler(image_MouseDown);
// image2.Opacity = 1; Свойство Opacity задает уровень непрозрачности
}
private void image_MouseDown(object sender, RoutedEventArgs e)
{        // Процедура обработки события "щелчок" на любом из изображений.
// Изменяем состояние флажка на противоположное:
Флажок =  !Флажок; // Создаем объект анимации:
var Аниме = new System.Windows.Media.Animation.DoubleAnimation();
// Устанавливаем пределы изменения степени непрозрачности:
if  (Флажок == true)
{ Аниме.From = 1; Аниме.То = 0;  }
else
{ Аниме.From = 0; Аниме.То = 1;  }
// Продолжительность анимационного эффекта задаем равной 5 секундам:
Аниме.Duration = TimeSpan.FromSeconds(5);
// Запускаем анимацию для "верхнего" изображения:
image2.BeginAnimation)Image.OpacityProperty, Аниме);
}
}
}
Как видно из программного кода, вначале задаем булеву переменную Флажок так, чтобы она была "видна" из обеих процедур класса Page1. Исходя из состояний этой переменной false или true, будем менять первое изображение на второе или наоборот. Сразу после вызова процедуры InitializeComponent задаем принадлеж­ность рисунков c1.bmp и c2.bmp изображениям image1 и image2. Также задаем их размер и месторасположение на странице относительно сетки Grid. Присоединяем одну процедуру обработки двух событий, а именно, щелчок любой кнопкой мыши на одном изображении и на другом. Ниже пишем непосредственно процедуру об­работки упомянутых событий image_MouseDown. В этой процедуре в зависимости от состояния флажка задаем пределы изменения степени непрозрачности либо от 1 до 0, либо от 0 до 1. Затем запускаем анимацию для "верхнего" изображения. На рис. 16.3 показан фрагмент работы программы.

Рис. 16.3. После щелчка на изображении BMW МЗ постепенно прорисовывается автомобиль Chevrolet
Убедиться в работоспособности программы можно, открыв решение в папке WpfXbapДваИзо.
Пример 122. Закрашивание области текста горизонтальным линейным градиентом
Создадим автономное настольное WPF-приложение, включающее в себе текстовый блок, содержащий некоторый текст. Чтобы подчеркнуть значимость написанного, закрасим область текста с применением градиента. Градиент— это вид заливки в компьютерной графике, в которой необходимо задать цвета ключевых точек, а цвета остальных точек рассчитываются линейной интерполяцией. Таким образом, можно получать плавные переходы из одного цвета в другой, задав координаты и цвет начальной и конечной точек.
Для решения этой задачи запустим Visual Studio 2010, выберем среди инсталлированных шаблонов Windows шаблон WPF Application, т. е. автономное WPF-приложение, и назовем его WpfGradientText. Далее, перейдя на вкладку дизайна MainWindows.xaml, на панели элементов Toolbox дважды щелкнем по элементу TextBlock. Его размеры будем задавать в программном коде, поэтому сразу пере­ходим на вкладку кода MainWindows.xaml.cs (листинг 16.5).
Листинг 16.5. Плавный переход от одного цвета к другому в области текстового блока
// Автономное WPF-приложение содержит текстовый блок. Цвет текста в этом блоке закрашен с применением градиента. //Между начальной t=0.0 и конечной t=1.0 точками области текста заданы две ключевые точки t=0.25 и t=0.75.
// Каждой точке ставим в соответствие цвета: желтый, красный, синий и зеленый. Между этими цветами задаем плавный // переход от одного цвета к другому с помощью градиента
using System.Windows;
using System.Windows.Media;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace WpfGradientText
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Title = "Игорь Губерман";
textBlock1.Text = "Какие дамы, и не раз, шептали: \"Дорогой,\п" +
"Конечно, да, но не сейчас, не здесь, и не с тобой! \"";
textBlock1.Width = 470; textBlock1.Height = 50;
textBlockl.FontSize = 20;
// textBlock1.Background = Brushes .Gray;
// Создаем горизонтальный линейный градиент
LinearGradientBrush Градиент = new LinearGradientBrush();
// Задаем область для закрашивания линейным градиентом:
Градиент.StartPoint = new Point(0, 0.5);
Градиент.EndPoint = new Point(1, 0.5);
// Четыре точки t=0.0; t=0.25; t=0.75 и t=1.0
// образуют три подобласти с переходом цвета
//от желтого к красному, далее синему и затем зеленому
Градиент.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0));
Градиент.GradientStops.Add(new GradientStop(Colors.Red, 0.25));
Градиент.GradientStops.Add(new GradientStop(Colors.Blue,  0.75));
Градиент.GradientStops.Add(new GradientStop)Colors.LimeGreen, 1.0));
// Закрашиваем текст горизонтальным линейным градиентом:
textBlock1.Foreground = Градиент;
}
}
}
Как видно из программного кода, сразу после вызова процедуры InitiaiizeConponent задаем шуточный афоризм Игоря Губермана для свойства тек­стового блока TextBlock1.Text. Далее создаем горизонтальный линейный градиент между четырех точек, соответственно желтого, красного, синего и зеленого цветов. Градиент обеспечивает постепенный переход от одного цвета к другому (рис. 16.4). Убедиться в работоспособности программы можно, открыв решение в папке WpfGradientText.

Рис. 16.4. Закрашивание текстового блока горизональным линейным градинентом
Пример 123. Проверка орфографии в элементе управления редактирования текста
Если читатель помнит, в примере 54 главы 9 мы рассматривали возможность проверки орфографии (правописания) в текстовом поле и при этом использовали объектную библиотеку MS Word. Платформа .NET Framework 4 WPF позволяет обойтись без обращения к библиотеке MS Word, поскольку содержит в себе возможность проверки орфографии в редактируемом элементе управления, таком как TextBox или RichTextBox. При этом варианты проверки орфографии отображают­ся в виде контекстного меню. Например, когда пользователь щелкает правой кноп­кой мыши по слову с ошибкой, он получает набор орфографических вариантов или вариант Ignore Аll(Пропустить все).
Создадим автономное настольное WPF-приложение, включающее в себе текстовое поле с возможностью проверки орфографии. Для этого запустим Visual Studio 2010, выберем среди шаблонов Windows шаблон WPF Application, т. е. автономное WPF-приложение, и назовем его WpfTextBoxOpфoгpaфия. Далее, перей­дя на вкладку дизайна MainWindows.xaml, на панели элементов Toolbox дважды щелкнем по элементу TextBox. Его расположение, размеры и другие свойства будем задавать в программном коде, поэтому сразу перейдем на вкладку кода MainWindows.xaml.cs (листинг 16.6).
Листинг 16.6. Включение проверки орфографии в элементе управления редактирования текста TextBox
// Автономное WPF-приложение содержит элемент управления TextBox с включенной проверкой правописания
// англоязычного текста. Технология .NET Framework 4 WPF обеспечивает только английский,  французский, немецкий
// и испанский словари. Чтобы появилась возможность проверять русскоязычный текст, следует в коллекцию
// CustomDictionaries добавить пользовательский словарь русскоязычной лексики *.lex
using System;
using System.Windows;
using System.Windows.Controls;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace WpfTextBoxOpфoгpaфия
{
///<summary>
/// Interaction logic for MainWindow.xaml
///< / summary>
public partial class MainWindow : Window
{
publiс MainWindow()
{
 
InitializeComponent();
this.Title = "Проверка орфографии";
// Размеры окна:
this.Width = 300;  this.Height = 150;
// Расстояния от краев текстового поля до краев окна:
textBox1.Margin = new Thickness(10,  10,  0,  0);
// Размеры текстового поля:
textBox1.Width = 270; textBox1.Height = 95; textBox1.Focus();
// Включить проверку орфографии:
textBox1.SpellCheck.IsEnabled = true;
// Можно включить проверку орфографии также таким образом:
// SpellCheck.SetIsEnabled(textBoxl,  true);
// Разрешить перенос слов на другую строку:
textBox1.TextWrapping = TextWrapping.Wrap;
// При нажатии клавиши <Enter> разрешить переход на следующую строку:
textBox1.AcceptsReturn = true;
// Коллекция словарей для проверки орфографии:
System.Collections.IList Словари = SpellCheck.
GetCustomDictionaries(textBoxl);
// Добавить в коллекцию словарей словарь, созданный нами:
Словари.Add(new Uri(@"С://dic.lex"));
// Software is like sex,  it's better when it's free
}
}
}
Как видно из текста программы, чтобы включить средство проверки правопи­сания, свойству SpellCheck.IsEnabled присвоим значение true в элементе управ­ления редактирования текста. При включении этого средства проверки орфографии слова с ошибками подчеркиваются красной волнистой линией. Технология .NET Framework 4 WPF обеспечивает только английский, французский, немецкий и ис­панский словари.

Рис. 16.5. Пользовательский словарь разрешенной лексики
Чтобы появилась возможность проверять русскоязычный текст, следует в кол­лекцию CustomDictionaries добавить пользовательский словарь русскоязычной лекcики. Пользовательские словари используют файлы лексики, которые представляют собой текстовые файлы с расширением lex. Автор не нашел такого готового файла, возможно, читатель найдет его самостоятельно. Текстовый lex-файл лексики имеет следующую структуру (рис. 16.5).
В этом файле показаны первые несколько строк файла лексики. Каждая строка файла лексики содержит отдельное слово, утвержденное для проверки орфогра­фии. Первая строка файла может указывать код языка и региональных параметров (LCTD), к которым применяется словарь. Если языковой стандарт не указан, сло­варь применяется для всех языков. Как видно, файл diс.lex содержит фамилию автора на английском языке, поэтому при проверке орфографии слово "Ziborov" не было подчеркнуто красной волнистой линией (рис. 16.6), а английское слово "free" написано с ошибкой, контекстное меню приводит варианты проверки орфографии.

Рис. 16.6. Слова с ошибками подчеркиваются красной волнистой линией
Убедиться в работоспособности программы можно, открыв решение в папке WpfTextBoxOpфoгpaфия.
Пример 124. Программирование WPF-проигрывателя. Компоновка элементов управления с помощью панели StackPanel
Среди элементов управления WPF на панели Toolbox можно найти элемент воспроизведения файлов мультимедиа MediaElement. На основе этого элемента в данном примере создадим автономное настольное WPF-приложение, реализующее проигрыватель мультимедиа с возможностями включения паузы, остановки и регулировки уровня громкости.
Для этой цели запустим среду Visual С#2010, выберем среди шаблонов Windows шаблон WPF Application, т. е. автономное WPF-приложение, и назовем eго WpfПроигрыватель. Далее перейдем на
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.