среда, 19 мая 2010 г.

WPF. Часть 1. Знакомство.


Базы данных это хорошо, но надо же на чем-то писать приложения, которые будут работать с этими базами данных. Выбор мой пал на разработки компании Microsoft. Как среду разработки буду использовать Visual Studio 2010 Ultimate. И буду использовать технологию WPF. Но, так как я с этой технологией еще не очень хорошо знаком, то надо узнать о ней больше. Поэтому, в ходе своих изучений, буду публиковать некоторые материалы сюда.

Как я уже сказал, работать я буду в Visual Studio 2010 Ultimate (вы можете ее легко в интернете скачать, а как установить – можно прочитать в этой статье). Язык программирования буду использовать C#. Выбрал его потому, что он самый перспективный язык, флагман Microsoft. Крое того, у меня уже есть некоторый опыт программирования в этом языке. Если вы (каким-то чудом) не поставили Framework третий, то обязательно поставьте. А лучше – четвертый, надо же идти в ногу с технологическим прогрессом.
В первой моей статье про WPF будет больше теории, чем практики. Практика, конечно, тоже очень хорошая, я бы даже сказал – первостепенная, штука. Но, не зная истории и теории – ничего сделать не получится. Поэтому узнаем, откуда зародилась WPF, как ее использовать и некоторые другие вопросы.

В 1995 году, когда вышла Windows 95, компания Microsoft выпустила и интерфейс GDI (Graphics Device Interface), с помощью которого можно было рисовать некоторые примитивы, точки. От аппаратуры GDI был отдален, поэтому программисту была дана некоторая свобода. В 2001 году был выпущен обновленный GDI, в который была вложена объектно-ориентированная часть, но больше ничего нового не было. Назвали эти библиотеки GDI+.

И вот вышел Microsoft .NET Framework 3.0. Это была обновленная вторая версия, но туда были добавлены четыре новых элемента:
·         Windows Presentation Foundation  (WPF) — графическая (презентационная) подсистема в составе .NET Framework 3.0, имеющая прямое отношение к XAML.
·         Windows Communication Foundation (WCF)
·         Windows Workflow Foundation (WF)
·         Windows CardSpace
Меня интересуют все эти технологии, но разрываться на них все нет времени, надо остановиться на какой-либо одно. Поэтому я пока буду изучать WMP.

Основное применение WPF – это Rich User Interface (богатый пользовательский интерфейс. Он действительно богатый). Но новую технологию можно применять и в других областях, например – при программировании игр. А все потому, что WPF использует ускорение, предоставляемое видеокартой.

В чем преимущества WPF? Начнем по порядку:

1. Разделение обязанностей проектирования интерфейса и программирования бизнес-логики. Теперь программисту уже не надо самому придумывать (или реализовывать придуманный) интерфейс, а можно сосредоточиться на программировании бизнес-логики.

2. Разделение представления и данных. Язык описания графики (грубо говоря) называется XAML, с его помощью можно даже изменить интерфейс программы тогда, когда она уже готова без изменения бизнес-логики. Кроме того, есть множество плагинов и отдельных пакетов, которые позволяют рисовать (в прямом смысле) интерфейс пользователся.
Давайте это проверим на практике: открываем Visual Studio, создаем новое WPF-приложение:



И видим, что нам доступно две вкладки: MainWindow.xaml и MainWindow.xaml.cs



 То есть действительно, в одном окне мы можем изменить интерфейс приложения, а другом – прописать его логику. Давайте сделаем простенькое приложение.

Вставьте в окно MainWindow.xaml следующий код:

<Window x:Class="WpfApplication3.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 Width="300" Height="300" Background="OrangeRed">
        <Border Margin="10" CornerRadius="50">
            <Border.Background>
                <RadialGradientBrush>
                    <GradientStop Color="#FF000000" Offset="1" />
                    <GradientStop Color="Blue" Offset="1" />
                    <GradientStop Color="Green" Offset="0" />
                RadialGradientBrush>
            Border.Background>
            <TextBlock Text="Здравствуй, мир WPF!" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White" FontSize="18" />
        Border>
    Grid>
Window>

Как вы поняли, мы пока поработаем только с графическими элементами. XAMP – это, можно сказать, язык разметки. В своей работе на XAML необходимо использовать теги (открывающие и закрывающие, как в HTML).

То, что заключено между тегами Window – это наше окно, которое выведется. С помощью элемента Grid можно создавать очень сложные интерфейсы. Он переводится как сетка – действительно, с помощью Grid можно разделить окно программы на ячейки, куда можно вставлять различные элементы. Здесь мы описали одну ячейку в окне (так как grid не разделен) и назначили некоторые свойства этой ячейке (Height, Width, Background).

Элемент Border необходим тогда, когда необходимо создать границу чего-либо (border так и переводится - граница). Между элементами Border мы объявили отступ от границы окна в десять пикселей (Margin=”10”) и радиус округления угла (CornerRadius) в пятьдесят пикселей.

Затем мы создали фон это границы (Border.Background) и там назначили цвета и смещения создаваемых фонов. (GradientStop и Offset).

И, чтобы у нас не было пустое окно (не только цвета, выведем там текстовое сообщение с помощью TextBlock (текстовый блок)  у которого назначим некоторые свойства (text – текст, который будет выведен и другие).

Теперь визуально проверьте правильность написания всех имен, слов; проверьте, закрыли ли вы все теги. Visual Studio 2010 очень помогает искать опечатки, так как подчеркивает те слова (и строки) где есть ошибки (либо невозможно скомпилировать). Если у вас ошибок нет – смело нажимайте на F5.



У меня вот что получилось. По какой-то причине (я пока сам не знаю, на разберусь) созданную картинку нельзя изменить (по размеру). Но до этого я еще доберусь.

Вот так, довольно просто, можно менять интерфейс программы. Сейчас мы познакомились с историей Microsoft Windows Presentation Foundation (WPF). В следующих статьях я буду рассказывать свой путь обучения этой технологии.

Комментариев нет:

Отправить комментарий