<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://silverlighter.ru/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'Expression Blend'</title><link>http://silverlighter.ru/search/SearchResults.aspx?a=1&amp;o=DateDescending&amp;tag=Expression+Blend&amp;orTags=0</link><description>Search results matching tag 'Expression Blend'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008 SP1 (Debug Build: 30619.63)</generator><item><title>Microsoft Expression Blend 4 Step by Step</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2010/09/06/microsoft-expression-blend-4-step-by-step.aspx</link><pubDate>Mon, 06 Sep 2010 12:05:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:50836</guid><dc:creator>Helen</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/mebsbs_32C995BE.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;MARGIN-LEFT:0px;BORDER-TOP:0px;MARGIN-RIGHT:0px;BORDER-RIGHT:0px;" title="mebsbs" border="0" alt="mebsbs" align="right" src="http://dev.net.ua/blogs/helen/mebsbs_thumb_3AFDBB55.jpg" width="179" height="179" /&gt;&lt;/a&gt; Идея написать свою книгу в мыслях была давно. О дизайне интерфейсов, о продуктах Microsoft Expression &amp;hellip; В этом году мне в некотором смысле удалось осуществить эту задумку. И сегодня я хочу сделать небольшой анонс своей первой книги - &lt;a href="http://cut.ms/0bO" target="_blank"&gt;Microsoft&amp;reg; Expression Blend 4 Step by Step&lt;/a&gt;, которая, как я надеюсь, выйдет этот осенью.&lt;/p&gt;
&lt;h3&gt;Для кого эта книга? &lt;/h3&gt;
&lt;p&gt;Как вы догадались, серия &amp;ldquo;Step by Step&amp;rdquo; наилучшим образом подходит тем, кто еще не знаком с Expression Blend 4, либо желает расширить свои знания и познакомиться с возвожностями 4-ки. Также&amp;nbsp; акцент сделан на начинающих RIA дизайнеров, на дизайнеров, работающих с продуктами Adobe, но еще не знакомых с Expression, и разработчиков, которые хотят для себя открыть проектирование интерфейсов в дизайнерской среде. С самого начала, шаг за шагом, Вы сможете освоить Microsoft&amp;reg; Expression Blend 4 по этой книге.&lt;/p&gt;
&lt;h3&gt;Что в книге?&lt;/h3&gt;
&lt;p&gt;Общее знакомство с интерфейсом продукта, основы XAML и представление о C#, прототипирование с помощью SketchFlow, скиннинг элементов управления, работа с данными, использование поведений и много других интересных моментов.&lt;/p&gt;
&lt;h3&gt;Авторы&lt;/h3&gt;
&lt;p&gt;Также мне хотелось бы представить вам моего соавтора и замечательного друга. &lt;a href="http://cut.ms/0bN" target="_blank"&gt;Chris Leeds&lt;/a&gt; является Microsoft MVP: Expression Web и также известен как автор книг по Microsoft Expression Web. &lt;/p&gt;
&lt;h3&gt;Язык издания&lt;/h3&gt;
&lt;p&gt;Книга издается на английском языке &lt;/p&gt;
&lt;p&gt;Предзаказать книгу &lt;a href="http://cut.ms/0bO" target="_blank"&gt;Microsoft&amp;reg; Expression Blend 4 Step by Step&lt;/a&gt; можно на Amazon.com.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;С уважением, &lt;br /&gt;Алена Косинская &lt;br /&gt;UX designer &lt;br /&gt;Microsoft MVP: Expression Blend&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=10111" width="1" height="1" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://dev.net.ua/blogs/helen/archive/2010/09/06/10111.aspx"&gt;Microsoft Expression Blend 4 Step by Step&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Новый формат образцов данных</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2010/06/22/novij-format-obrazcov-dannih.aspx</link><pubDate>Tue, 22 Jun 2010 06:18:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:50233</guid><dc:creator>Helen</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;В Expression Blend 4 появился новый формат для строковых образцов данных &amp;ndash; &lt;strong&gt;Colors&lt;/strong&gt;.&amp;nbsp; Если создать новое свойство и выбрать &lt;strong&gt;Type&lt;/strong&gt; = &lt;strong&gt;String&lt;/strong&gt;, то в поле &lt;strong&gt;Format&lt;/strong&gt; для выбора доступна опция &lt;strong&gt;Colors&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/1_2271ECFC.png"&gt;&lt;img height="436" width="282" src="http://dev.net.ua/blogs/helen/1_thumb_673E1130.png" alt="1" border="0" title="1" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Его можно использовать в разных целях, в том числе и для заполнения фона объектов.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Приведу небольшой пример. Допустим у нас есть коллекция элементов, для которых задано два поля &amp;ndash; Price и Color.&amp;nbsp; Перетащим поле Price из созданной коллекции на рабочую область документа в режиме списка (List Mode).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/2_13E6CB0A.png"&gt;&lt;img height="267" width="494" src="http://dev.net.ua/blogs/helen/2_thumb_16AC7FFD.png" alt="2" border="0" title="2" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Теперь сделаем так, что фон каждого значения будет случайно заполняться каким-то цветом.   &lt;br /&gt;Зайдем в режим редактирования шаблона элемента ItemTemplate и выберем StackPanel.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/3_233A2D19.png"&gt;&lt;img height="159" width="320" src="http://dev.net.ua/blogs/helen/3_thumb_343E5AFC.png" alt="3" border="0" title="3" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;В свойствах StackPanel выбираем установку цвета для Background. Раскрыв Advanced options редактора, сделаем привязку данных.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/4_732FDB97.png"&gt;&lt;img height="336" width="379" src="http://dev.net.ua/blogs/helen/4_thumb_119A1C81.png" alt="4" border="0" title="4" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Выбираем Color из доступного списка.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/5_5DF1B022.png"&gt;&lt;img height="377" width="614" src="http://dev.net.ua/blogs/helen/5_thumb_5CAD1743.png" alt="5" border="0" title="5" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Теперь фон для блока каждого элемента в списке также берется случайным образом, как и значение текстового блока.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/6_69BF1AF0.png"&gt;&lt;img height="180" width="138" src="http://dev.net.ua/blogs/helen/6_thumb_41AC6BD1.png" alt="6" border="0" title="6" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://dev.net.ua/aggbug.aspx?PostID=9882" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://dev.net.ua/blogs/helen/archive/2010/06/22/9882.aspx"&gt;Новый формат образцов данных&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Sketch effects in Expression Design</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2010/06/02/sketch-effects-in-expression-design.aspx</link><pubDate>Wed, 02 Jun 2010 16:34:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:49820</guid><dc:creator>Helen</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;Есть несколько путей создания прототипов приложений с помощью SketchFlow. Одни рисуют на бумаге, затем сканируют/фотографируют, импортируют графику в Expression Design/Adobe Photoshop, обрабатывают ее, затем импортируют в Blend отдельные кусочки, создают анимацию и т.д. Способ красивый, креативный и с wow-эффектом, но долгий.&amp;nbsp; Другие сразу в Blend делают прототип функциональности, используя стандартные скетчевые элементы управление и образцы данных, встроенные в Blend. Во втором случае прототип получается сделать гораздо быстрее, но используемые объекты-изображения в нем выходят совсем не &amp;ldquo;скетчи&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Почему бы тогда не сделать как-то промежуточный вариант? У меня давно возникла идея вместо прорисовки на бумаге отдельных картинок &amp;ndash; брать фотографии и иллюстрации и накладывать на них скетчевые эффекты в графическом редакторе. Такие эффекты можно заготовить один раз &amp;ndash; и потом применять к набору тематических фотографий. Будь то авто, мебель или люди.&lt;/p&gt;
&lt;p&gt;Для примера приведу ряд изображений, который я преобразовала в Expression Design для демо-прототипа на ReMIX10.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Было:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/2_4F165833.png"&gt;&lt;img height="400" width="400" src="http://dev.net.ua/blogs/helen/2_thumb_6F8D7218.png" alt="2" border="0" title="2" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Стало:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/1_54087015.png"&gt;&lt;img height="400" width="400" src="http://dev.net.ua/blogs/helen/1_thumb_0EBFF31F.png" alt="1" border="0" title="1" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;    &lt;/p&gt;
&lt;p&gt;   &lt;br /&gt;В результате картинки в приложении-прототипе выглядят уже в стиле &amp;ldquo;скетчи&amp;rdquo;:    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://dev.net.ua/blogs/helen/3_3F06C7D5.png"&gt;&lt;img height="294" width="400" src="http://dev.net.ua/blogs/helen/3_thumb_245A2BBC.png" alt="3" border="0" title="3" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Понравившиеся эффекты можно скопировать на новое изображение с помощью инструмента Attribute Dropper &lt;a href="http://dev.net.ua/blogs/helen/dropper_6D9CD0B7.png"&gt;&lt;img height="32" width="32" src="http://dev.net.ua/blogs/helen/dropper_thumb_489F103E.png" alt="dropper" border="0" title="dropper" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp; :    &lt;br /&gt;&amp;ndash; захватив свойства на одном объекте и перетащив их на другой. &lt;/p&gt;
&lt;p&gt;Больше всего меня привлекли комбинации эффектов &amp;ndash; Poster Edges + Note Paper&amp;nbsp; и&amp;nbsp; CrossHatch + Note Paper. Надеюсь вам они тоже пригодятся.&amp;nbsp; &lt;br /&gt;Прилагаю эффекты в &lt;a target="_blank" href="http://cut.ms/U1M"&gt;файле Expression Design&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://dev.net.ua/aggbug.aspx?PostID=9779" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://dev.net.ua/blogs/helen/archive/2010/06/02/9779.aspx"&gt;Sketch effects in Expression Design&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Sketch Mockups</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2010/05/17/sketch-mockups.aspx</link><pubDate>Mon, 17 May 2010 06:54:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:49703</guid><dc:creator>Helen</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;Иногда стоит заглянуть на закладку Samples. Где-где, а тут всегда полно замечательных примеров, на которых стоит поучиться. Вот и в Blend 4 RC добавили несколько интересных проектов, один из которых посвящен Sketch-заготовкам для ваших прототипов. Называется данный проект MockupDemonstration. И если вы еще не успели на него посмотреть &amp;ndash; то искренне советую.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/1_7B42143C.png"&gt;&lt;img height="265" width="173" src="http://dev.net.ua/blogs/helen/1_thumb_6AE69C83.png" align="right" alt="1" border="0" title="1" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px 0px 0px 10px;WIDTH:151px;DISPLAY:inline;HEIGHT:215px;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Проект использует библиотеку заготовок элементов управления. Тут есть:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows Explorer 
&lt;/li&gt;
&lt;li&gt;Windows Desktop 
&lt;/li&gt;
&lt;li&gt;Windows Application 
&lt;/li&gt;
&lt;li&gt;Web browser 
&lt;/li&gt;
&lt;li&gt;Media Player 
&lt;/li&gt;
&lt;li&gt;Блок логина 
&lt;/li&gt;
&lt;li&gt;Выпадающее меню 
&lt;/li&gt;
&lt;li&gt;Диалоговые окна с одной, двумя и тремя кнопками 
&lt;/li&gt;
&lt;li&gt;Различные иконки 
&lt;/li&gt;
&lt;li&gt;Курсоры 
&lt;/li&gt;
&lt;li&gt;и многое другое &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/3_17232368.png"&gt;&lt;img height="218" width="324" src="http://dev.net.ua/blogs/helen/3_thumb_0395C3C7.png" alt="3" border="0" title="3" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Все эти элементы находятся в пределах этого проекта. Для того чтобы использовать их в своих прототипах проектов, необходимо:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Для Silverlight:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Из папки с примером &lt;br /&gt;Documents &amp;gt; Expression &amp;gt; Blend 4 &amp;gt; Samples &amp;gt; MockupDemonstration &amp;gt; MockupDemonstration &amp;gt; Libraries &amp;gt; Silverlight &amp;gt; Debug &lt;br /&gt;скопировать библиотеку &lt;i&gt;Microsoft.Expression.Prototyping.MockupsSL.dll&lt;/i&gt; и прилагающуюся папку &lt;i&gt;Design&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;в папку&amp;nbsp; &lt;br /&gt;Program Files(x86) &amp;gt; Microsoft Expression &amp;gt; Blend 4 &amp;gt; Libraries &amp;gt; Silverlight &amp;gt; 4.0 &amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;И для WPF:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Из папки&amp;nbsp; &lt;br /&gt;Documents &amp;gt; Expression &amp;gt; Blend 4 &amp;gt; Samples &amp;gt; MockupDemonstration &amp;gt; MockupDemonstration &amp;gt; Libraries &amp;gt; .NETFramework &amp;gt; Debug &lt;br /&gt;скопировать библиотеку &lt;i&gt;Microsoft.Expression.Prototyping.MockupsSL.dll&lt;/i&gt; и прилагающуюся папку &lt;i&gt;Design&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;в папку&amp;nbsp; &lt;br /&gt;Program Files(x86) &amp;gt; Microsoft Expression &amp;gt; Blend 4 &amp;gt; Libraries &amp;gt; .NETFramework &amp;gt; 4.0 &amp;gt;&lt;/p&gt;
&lt;p&gt;После перезагрузки Blend для новых проектов SketchFlow у вас в разделе Assets &amp;gt; SketchFlow появится раздел &lt;strong&gt;Mockups&lt;/strong&gt;. Его элементы имеют зеленые скетчевые иконки.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/4_7B31EE6F.png"&gt;&lt;img height="231" width="378" src="http://dev.net.ua/blogs/helen/4_thumb_4C0002D8.png" alt="4" border="0" title="4" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Теперь вы можете воспользоваться этими заготовками, перетащив необходимый объект на рабочую поверхность.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/2_31BF99B4.png"&gt;&lt;img height="307" width="410" src="http://dev.net.ua/blogs/helen/2_thumb_16A6CAA6.png" alt="2" border="0" title="2" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Каждая заготовка состоит из различных контент-блоков, и&amp;nbsp; содержимое достаточно гибко модифицируется.&amp;nbsp; На примере диалоговых окон мы видим, что существует блок настройки окна, где можно выбрать иконку для сообщения, скрыть или показать отдельных кнопки. А если развернуть Advanced properties, то можно найти дополнительные элементы и отобразить их.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/6_6708AC19.png"&gt;&lt;img height="215" width="268" src="http://dev.net.ua/blogs/helen/6_thumb_5F1109B7.png" alt="6" border="0" title="6" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Сразу хочу сказать что кнопки окна работающие &amp;ndash; на них можно &amp;ldquo;навесить&amp;rdquo; поведения для обработки введенной информации, активизации состояний экрана и др.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/5_0506BA0E.png"&gt;&lt;img height="435" width="299" src="http://dev.net.ua/blogs/helen/5_thumb_6AC650E9.png" alt="5" border="0" title="5" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;В итоге имеем отличный&amp;nbsp; набор заготовок, расширяющий наши возможности прототипирования.&lt;/p&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://dev.net.ua/aggbug.aspx?PostID=9729" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://dev.net.ua/blogs/helen/archive/2010/05/17/9729.aspx"&gt;Sketch Mockups&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Особенности национальной… разработки дизайна Silverlight/WPF приложений в Adobe Photoshop</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2010/04/22/osobennosti-nacionaljnoj_2620_-razrabotki-dizajna-silverlightwpf-prilozhenij-v-adobe-photoshop.aspx</link><pubDate>Thu, 22 Apr 2010 12:22:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:45763</guid><dc:creator>Helen</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;В перерывах конференции &amp;laquo;Visual Studio 2010: создание приложений будущего&amp;raquo; обсуждались различные темы из жизни разработчиков. Один из коллег поднял вопрос о проблеме разработки дизайна Silverlight/WPF приложений.&amp;nbsp; Первый ответ в виде шутки напрашивался сам собой: &amp;ldquo;Кесарю &amp;ndash; кесарево, а Design для дизайна&amp;rdquo;. Но следующий вопрос заключался в том, почему некоторые дизайнеры рисуют Silverlight/WPF дизайн в Expression Design, а некоторые продолжают это делать в Adobe Photoshop/Illustrator и что с этим делать ?! &lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/d_and_p_72D99AAE.png"&gt;&lt;img height="64" width="172" src="http://dev.net.ua/blogs/helen/d_and_p_thumb_29D378E8.png" alt="d_and_p" border="0" title="d_and_p" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;На первый взгляд может показаться, что проблемы-то и нет, ведь в Expression Design/Blend есть замечательный &lt;a target="_blank" href="http://www.techdays.ru/videos/1310.html"&gt;инструмент импорта файлов Adobe Photoshop/Illustrator&lt;/a&gt; и каждый рисует в том, в чем ему удобно, а в Blend-е импортирует полученное. Я не очень люблю делать обзоры типа &amp;ldquo;A&amp;rdquo; vs &amp;ldquo;B&amp;rdquo;, тем более продуктов из разной весовой и ценовой категории. И считаю, что каждый человек сам волен выбирать продукты для разработки&amp;nbsp; - на основе здравого смысла (!), поставленной задачи, анализа преимуществ/недостатков, привычек/заморочек, цены и т.д. &lt;/p&gt;
&lt;p&gt;Так вот, давайте поставим определенную цель: разработка дизайна для Silverlight/WPF приложений (!). И исходя из этого, мы уже можем провести некоторый анализ и сравнение инструментов для данной задачи. Ведь всегда есть свои особенности:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Слаженность и скорость работы родственных продуктов 
&lt;/li&gt;
&lt;li&gt;Мощность набора инструментов продукта 
&lt;/li&gt;
&lt;li&gt;Качество XAML-кода 
&lt;/li&gt;
&lt;li&gt;Векторизация и перенос свойств элементов интерфейса 
&lt;/li&gt;
&lt;li&gt;Поддержка эффектов 
&lt;/li&gt;
&lt;li&gt;Обновление изменений в деталях элементов интерфейса 
&lt;/li&gt;
&lt;li&gt;Использование ресурсов &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Что ж, давайте попробуем разобрать по полочкам все пункты про дизайн Silverlight/WPF приложений. Для примера создадим в обоих редакторах (были взяты &lt;a target="_blank" href="http://www.adobe.com/mena/products/photoshop/photoshop/"&gt;Adobe Photoshop СS3 Trial&lt;/a&gt; и &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10e4a530-2c96-4aff-b00c-a154501876bc&amp;amp;displaylang=en"&gt;Expression Design 3 Trial&lt;/a&gt;) файл, с размером холста 800 на 600 пикселей и разрешение 96 пикселей на дюйм. Возьмем и добавим не сильно сложные по дизайну кнопки: скругленный фон с небольшой тенью, и белый текст на нем. Я постаралась чтоб они выглядели приблизительно идентично в обоих редакторах (хотя с тенью пришлось помучаться из-за разных типов параметров).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/0p_6F0BD011.png"&gt;&lt;img height="150" width="200" src="http://dev.net.ua/blogs/helen/0p_thumb_02B8B9A6.png" alt="0p" border="0" title="0p" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;a href="http://dev.net.ua/blogs/helen/0d_5386CE0E.png"&gt;&lt;img height="150" width="200" src="http://dev.net.ua/blogs/helen/0d_thumb_4B22F8B7.png" alt="0d" border="0" title="0d" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;И приведу снимок панели Layers в обоих редакторах: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev.net.ua/blogs/helen/2p_5ECFE24B.png"&gt;&lt;img height="283" width="217" src="http://dev.net.ua/blogs/helen/2p_thumb_1CE8FCFD.png" alt="2p" border="0" title="2p" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;a href="http://dev.net.ua/blogs/helen/2d_2D80F7EB.png"&gt;&lt;img height="219" width="217" src="http://dev.net.ua/blogs/helen/2d_thumb_20E32502.png" alt="2d" border="0" title="2d" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;1. Слаженность и скорость работы родственных продуктов.&lt;/h3&gt;
&lt;p&gt;Я думаю излишне отрицать утверждение о том, что связь между продуктами от одного производителя всегда лучше налажена и работает быстрее чем связь между продуктами разных производителей.&lt;/p&gt;
&lt;p&gt;Поэтому связка Expression Design + Expression Blend&amp;nbsp; эффективнее чем Adobe Photoshop + Expression Blend. Почему?&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Буфер обмена и прямое копирование.&lt;/strong&gt; &lt;/h4&gt;
&lt;p&gt;Допустим я еще не хочу экспортировать целый файл с дизайном. Я спокойно могу выделить элемент в Expression Design и скопировать его через буфер обмена в Expression Blend. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;И это будет векторный элемент.&amp;nbsp; Если я попытаюсь сделать это из Adobe Photoshop, в лучшем случае у меня вставится изображение в формате png, а в худшем &amp;ndash; ничего. 
&lt;/li&gt;
&lt;li&gt;Если объекту было дано имя, то при копировании из Expression Design &amp;ndash; в Blend будет вставлен именованный объект. При копировании с Photoshop &amp;ndash; объект без имени. 
&lt;/li&gt;
&lt;li&gt;В Expression Design я всегда могу настроить копирование через буфер обмена и выбрать необходимые параметры для Silverlight/WPF: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev.net.ua/blogs/helen/1_7459F51B.png"&gt;&lt;img height="295" width="300" src="http://dev.net.ua/blogs/helen/1_thumb_76B37719.png" alt="1" border="0" title="1" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Из Expression Design можно копировать через буфер обмена сгруппированный набор объектов. Из Photoshop я это делать не могу. &lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong&gt;Занимаемые ресурсы.&lt;/strong&gt;&amp;nbsp; &lt;/h4&gt;
&lt;p&gt;Системные требования к редакторам вы можете посмотреть сами на сайтах производителей. А вот занимаемые ресурсы (примечание автора: специальная оптимизация продуктов не проводилась), а именно вкладка Memory в Task Manager-e после получаса синхронной работы по созданию идентичных кнопок выглядит так: Photoshop &amp;ndash; 134 Mb, Design &amp;ndash; 102 Mb. Соответственно файл с одной кнопкой в Photoshop-e весит 199 кб, в Design &amp;ndash; 24 кб. Что будет далее &amp;ndash; можете поэкспериментировать. &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Работа через импорт-экспорт&lt;/strong&gt;. &lt;/h4&gt;
&lt;p&gt;Теперь попробуем пойти другим путем &amp;ndash; правильно импортируем Photoshop-файл в Blend, выбрав только группу с элементами кнопки, а из Expression Design &amp;ndash; экспортируем в XAML тоже только кнопку, добавляем файл в проект, а потом копируем из него необходимую группу (хотя результат тот же что и через буфер обмена). &lt;br /&gt;&lt;br /&gt;Настройки экспорта из Expression Design: &lt;br /&gt;&amp;nbsp;&lt;a href="http://dev.net.ua/blogs/helen/button_design_1BD0C186.png"&gt;&lt;img height="251" width="365" src="http://dev.net.ua/blogs/helen/button_design_thumb_7998B5FF.png" alt="button_design" border="0" title="button_design" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Настройки импорта Photoshop-файла в Blend 4 RC для проекта WPF-приложения: &lt;br /&gt;&lt;a href="http://dev.net.ua/blogs/helen/button_photoshop_37B1D0B1.png"&gt;&lt;img height="216" width="375" src="http://dev.net.ua/blogs/helen/button_photoshop_thumb_75CAEB62.png" alt="button_photoshop" border="0" title="button_photoshop" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Что получаем в Blend 4 RC: &lt;br /&gt;&lt;a href="http://dev.net.ua/blogs/helen/3d_01EC658A.png"&gt;&lt;img height="422" width="374" src="http://dev.net.ua/blogs/helen/3d_thumb_0E0DDFB1.png" alt="3d" border="0" title="3d" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;после Adobe Photoshop: Canvas &amp;ndash;&amp;gt; Canvas &amp;ndash;&amp;gt; (Image (+Effect) +Textblock )&amp;nbsp; &lt;br /&gt;и Expression Design: Viewbox &amp;ndash;&amp;gt; Canvas &amp;ndash;&amp;gt; (Path (+Effect) + Textblock )&lt;/p&gt;
&lt;p&gt;В общем уже на этом этапе виден результат.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Плюсы после Photoshop-a:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Текст как текстовый блок, правильного размера, шрифта, без трансформаций 
&lt;/li&gt;
&lt;li&gt;Эффект тени в виде DropShadowEffect 
&lt;/li&gt;
&lt;li&gt;Именованность объектов соблюдена для папки и для объектов (там где была задана) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Лишняя компоновка верхнего уровня - Canvas с размерами холста 800 на 600 
&lt;/li&gt;
&lt;li&gt;После Photoshop-а фон кнопки стал в виде PNG-картинки в отдельной папке 
&lt;/li&gt;
&lt;li&gt;Для текстового блока указаны лишние параметры, которые можно было бы опустить: &lt;br /&gt;IsHyphenationEnabled=&amp;quot;True&amp;quot; LineStackingStrategy=&amp;quot;BlockLineHeight&amp;quot; LineHeight=&amp;quot;14&amp;quot; TextAlignment=&amp;quot;Left&amp;quot;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Плюсы после Design-a:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Компоновка верхнего уровня &amp;ndash; Viewbox c размерами 85 на 45 (в общем-то вполне ожидаемый результат и более удобный) 
&lt;/li&gt;
&lt;li&gt;Эффект тени в виде DropShadowEffect 
&lt;/li&gt;
&lt;li&gt;Именованность объектов соблюдена для папки и для объектов (там где была задана) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Минусы:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Текст как текстовый блок, но применено преобразование с помощью MatrixTransform (зачем - для меня это до сих пор загадка) и размер не тот. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2. Мощность набора инструментов продукта&lt;/h3&gt;
&lt;p&gt;Оба редактора имеют обширный набор инструментов для прорисовки элементов интерфейса. Начиная от простых линий и обычных форм и заканчивая масками и контурами отсечения (Clipping Path). &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Общие рекомендации могут быть одними: &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;чем проще элементы вы используете &amp;ndash; тем легче вам потом будет 
&lt;/li&gt;
&lt;li&gt;избегайте режимов наложения в обоих редакторах (Blend Mode) &amp;ndash; они не поддерживаются в XAML 
&lt;/li&gt;
&lt;li&gt;именуйте объекты 
&lt;/li&gt;
&lt;li&gt;объединяйте объекты в группы по смыслу &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. Качество XAML-кода&lt;/h3&gt;
&lt;p&gt;в п. 1 мы визуально рассмотрели что получается после Photoshop-a и Design-a. Дело даже не в кол-ве кода, а в типе выходных элементов и в простоте их оптимизации и дополнительной настройке. А это необходимо делать в любом случае. &lt;/p&gt;
&lt;p&gt;Давайте сделаем промежуточные заключения.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Выводы после Photoshop-a: &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;необходимо преобразовать Canvas в что-то более подходящее по типу компоновки и изменить его размеры 
&lt;/li&gt;
&lt;li&gt;почистить &amp;ldquo;лишние&amp;rdquo; параметры текстового блока 
&lt;/li&gt;
&lt;li&gt;Для масштабируемости кнопки необходимо что-то сделать с картинкой. Этот пункт самый проблемный. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Выводы после Design-a: &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;очищать трансформацию текста (делается в один клик на peg-e) и выставлять правильный размер шрифта для текста 
&lt;/li&gt;
&lt;li&gt;Для растяжения кнопки только в горизонтальном направлении (в зависимости от контента) тоже придеться преобразовывать векторный контур в что-то более подходящее (Border, например). Так как прямоугольник с скругленными углами не преобразовывается автоматом в Border с скругленными углами. &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. Векторизация и перенос свойств элементов интерфейса&lt;/h3&gt;
&lt;p&gt;В плане векторизации (а это основная идея интерфейсов для Silverlight/WPF приложений) Expression Design выигрывает однозначно:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;нарисованные контуры получаются векторными и масштабируемыми 
&lt;/li&gt;
&lt;li&gt;Можно спокойно использовать Stroke в качестве мощного декоративного оформления. И это будет перенесено в XAML. В Photoshop это достаточно проблемно. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Применять в Expression Design можно&lt;/strong&gt;, но &lt;strong&gt;осторожно&lt;/strong&gt; и осознанно:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SuperScript и SubScript &amp;ndash; на XAML-выходе к тексту просто будет применено преобразование с помощью MatrixTransform 
&lt;/li&gt;
&lt;li&gt;Контуры отсечения (Clipping Path). Будет использован Canvas с выставленным свойством Clip, но увеличится кол-во вложенных элементов компоновки &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;А вот чего &lt;strong&gt;не стоит делать в Photoshop-e&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Не используйте Smart objects, они не будут векторизированы 
&lt;/li&gt;
&lt;li&gt;Не накладывайте Layer Mask в Photoshop-е. Они не будут импортированы как вектор (а только как PNG-картинки). В Blend-e можно потом сделать действительно векторную маску прозрачности 
&lt;/li&gt;
&lt;li&gt;Не делайте Clipping Mask на объекты. Это проигнорируется при импорте. Лучше потом воспользоваться в Blend-e контурами отсечения (Clipping Path) 
&lt;/li&gt;
&lt;li&gt;Не используйте для текста SuperScript и SubScript &amp;ndash; это не будет применено 
&lt;/li&gt;
&lt;li&gt;Градиенты? Их ВЕКТОРНЫЙ экспорт-импорт для меня до сих пор остается загадкой. Если кто нашел способ &amp;ndash; поделитесь для полноты картины. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Не стоит&lt;/strong&gt; использовать для текста (если только он потом не будет растеризирован) &lt;strong&gt;ни в Photoshop, ни в Design&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leading 
&lt;/li&gt;
&lt;li&gt;Tracking 
&lt;/li&gt;
&lt;li&gt;Horizontal scale 
&lt;/li&gt;
&lt;li&gt;Baseline offset 
&lt;/li&gt;
&lt;li&gt;Alignment &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Использование форм.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Отдельным пунктом для Photoshop-a хочу выделить использование форм. А именно &amp;ndash; почему же все эти стандартные прямоугольники, эллипсы импортируются в Blend в виде картинок, а не векторных контуров? Ответ кроется в панели под названием options bar. Например, когда мы выбираем Rounded Rectangle tool для рисования (или любую другую форму) - то в этой панели появляется набор свойств для данного элемента&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/param_3DE88172.png"&gt;&lt;img height="63" width="624" src="http://dev.net.ua/blogs/helen/param_thumb_694CA26C.png" alt="param" border="0" title="param" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;И мы видим что есть три режима для создания формы: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shape Layers 
&lt;/li&gt;
&lt;li&gt;Paths 
&lt;/li&gt;
&lt;li&gt;Fill Pixels &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Так вот, внешне вам может показаться что результат один и тот же.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/4p_27D1F013.png"&gt;&lt;img height="201" width="167" src="http://dev.net.ua/blogs/helen/4p_thumb_119BD4C1.png" alt="4p" border="0" title="4p" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Но давайте теперь посмотрим на панель Layers:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/5p_775B6B9C.png"&gt;&lt;img height="451" width="268" src="http://dev.net.ua/blogs/helen/5p_thumb_15C5AC86.png" alt="5p" border="0" title="5p" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Если выбран последний пункт &lt;strong&gt;Fill Pixels&lt;/strong&gt; &amp;ndash; то у вас будет нарисован растровый элемент, и в Blend-e в итоге вы получите PNG-картинку. Если же выбран первый пункт &lt;strong&gt;Shape Layers&lt;/strong&gt; &amp;ndash; то форма создается в виде векторной маски (думаю это не проблема &amp;ndash; эффект тени как мы видим тоже к ней применяется).&lt;/p&gt;
&lt;p&gt;И теперь откроем окошко импорта в Blend-e: &lt;br /&gt;&lt;a href="http://dev.net.ua/blogs/helen/5b_342FED6F.png"&gt;&lt;img height="323" width="470" src="http://dev.net.ua/blogs/helen/5b_thumb_04259BEE.png" alt="5b" border="0" title="5b" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Уже на этом этапе мы видим, что в первом случае создастся векторный контур, а во втором &amp;ndash; картинка. В чем можно убедиться на следующем шаге:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/6b_6FBFD662.png"&gt;&lt;img height="361" width="472" src="http://dev.net.ua/blogs/helen/6b_thumb_1F2E452F.png" alt="6b" border="0" title="6b" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;5. Поддержка эффектов&lt;/h3&gt;
&lt;p&gt;Я думаю многие дизайнеры любят применять к слоям эффекты в виде стилей. Это очень быстро, удобно и всегда можно отменить или подправить результат. Но есть пару замечаний как всегда:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Photoshop. &lt;/strong&gt;Если ваш дизайнер в Photoshop применил ряд эффектов в виде стилей для слоя, то при импорте часть из них будет проигнорировано, а именно ВСЕ кроме тени (да-да, и Stroke тоже):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/7b_2781F4B9.png"&gt;&lt;img height="130" width="352" src="http://dev.net.ua/blogs/helen/7b_thumb_45EC35A2.png" alt="7b" border="0" title="7b" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Выход есть всегда, но он понравится не всем. Нужно еще в Photoshop-e соединить в один два слоя: со стилем и пустой. Тогда хотя бы в виде картинки в Blend-e вы получите нужный результат.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Design&lt;/strong&gt;. Практически та же ситуация. Можно указать в окошке экспорта для Live effects &amp;ndash; пункт Convert to XAML effects. И DropShadow будет перенесен.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/8b_5D373A13.png"&gt;&lt;img height="66" width="296" src="http://dev.net.ua/blogs/helen/8b_thumb_6A311A24.png" alt="8b" border="0" title="8b" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;НО в &lt;a target="_blank" href="http://www.microsoft.com/expression/products/Design_ReleaseNotes.aspx#6"&gt;рекомендациях&lt;/a&gt; по экспорту от Expression Design сказано, что ЛУЧШЕ выбирать опцию растеризации. А причины следующие:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WPF поддерживает эффекты Drop shadow, Gaussian blur, но часто использовать их не рекомендуется по причине снижения производительности. 
&lt;/li&gt;
&lt;li&gt;В Silverlight также есть возможность использовать DropShadowEffect и BlurEffect, но злоупотреблять тоже не стоит. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;В общем вывод в отношении эффектов в обоих редакторах такой: лучше не злоупотреблять. &lt;/p&gt;
&lt;h3&gt;6. Обновление изменений в деталях элементов интерфейса&lt;/h3&gt;
&lt;p&gt;Если так случилось, что вы уже работаете над рабочей версией интерфейса вашего приложения в Blend-e и в то-же время продолжаете вносить изменения в макет дизайна, то периодически вам придеться заниматься обновлением частей XAML-кода и изображений. В итоге заново импортировать части элементов из Photoshop-a или заниматься Copy-Paste из Design-a. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Плюс для макетов Photoshop:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;импортер из Blend-a запоминает &amp;ldquo;видимость/невидимость&amp;rdquo; объектов. т.е. если вы в первый раз указали не импортировать какие-то объекты, то в следующий раз это состояние будет таким же. &lt;br /&gt;&lt;a href="http://dev.net.ua/blogs/helen/9b_1026CA7B.png"&gt;&lt;img height="83" width="242" src="http://dev.net.ua/blogs/helen/9b_thumb_79F0AF28.png" alt="9b" border="0" title="9b" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Плюс для макетов Design:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;есть замечательный инструмент Slice, с помощью которого можно настроить тип экспортируемого элемента и выделить &amp;ldquo;входящие&amp;rdquo; в него элементы.&amp;nbsp; Приведу в качестве примера скриншот, на котором понятно что к чему: &lt;br /&gt;&lt;a href="http://dev.net.ua/blogs/helen/10b_3875FCCF.png"&gt;&lt;img height="333" width="217" src="http://dev.net.ua/blogs/helen/10b_thumb_04CD9071.png" alt="10b" border="0" title="10b" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. Использование ресурсов&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ну и последний пункт, который больше идет в &lt;strong&gt;плюс Design&lt;/strong&gt;-у, в связке Photoshop+Blend такой возможности нет. Это использование ресурсов для WPF-приложений. &lt;/p&gt;
&lt;p&gt;История из жизни: необходимо было доработать набор иконок для одного симпатичного WPF-приложения. В Expression Design я разместила каждую иконку в отдельной группе с отдельным именем. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/helen/11_design_10EF0A98.png"&gt;&lt;img height="140" width="323" src="http://dev.net.ua/blogs/helen/11_design_thumb_0ED20BCF.png" alt="11_design" border="0" title="11_design" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;При экспорте есть возможность выбрать для всего документа формат - XAML WPF Resource Dictionary и сгруппировать по объектам - Group by Objects&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://dev.net.ua/blogs/helen/icons_4CEB2680.png"&gt;&lt;img height="159" width="322" src="http://dev.net.ua/blogs/helen/icons_thumb_4ED87589.png" alt="icons" border="0" title="icons" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;В итоге у меня выходит красивый XAML-файл ресурсов с векторными иконками. При изменении деталей дизайна иконок я просто его заново экспортирую и перезаписываю в проекте без каких-либо дополнительных манипуляций в Blend-e. Имена групп остаются те же для ресурсов, а иконки автоматически обновляются там, где они используются.&lt;/p&gt;
&lt;h3&gt;Выводы&lt;/h3&gt;
&lt;p&gt;Что ж, мы прояснили кое-какие моменты дизайна приложений в разных редакторах, а также их плюсы и минусы. Что использовать &amp;ndash; выбор за вами. Главное - сделать его правильно на основе анализа всех &amp;ldquo;ЗА&amp;rdquo; и &amp;ldquo;ПРОТИВ&amp;rdquo;. Надеюсь, что для убеждения дизайнеров вам теперь не пригодится &lt;a target="_blank" href="http://dev.net.ua/blogs/shatokhin/archive/2010/04/15/9583.aspx"&gt;инструмент для повышения эффективности решения проблем&lt;/a&gt;&amp;nbsp; :)&lt;/p&gt;
&lt;p&gt;Буду рада услышать аргументы, замечания и комментарии.&lt;/p&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://dev.net.ua/aggbug.aspx?PostID=9650" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://dev.net.ua/blogs/helen/archive/2010/04/22/9650.aspx"&gt;Особенности национальной&amp;hellip; разработки дизайна Silverlight/WPF приложений в Adobe Photoshop&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Expression Blend 4 Beta</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2010/03/16/expression-blend-4-beta.aspx</link><pubDate>Mon, 15 Mar 2010 21:08:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:45451</guid><dc:creator>Helen</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;Кол-во транслируемых новостей с MIX10 возрастает с каждой минутой. Мне хотелось бы поделиться с вами последними новостями в сфере Expression - наконец-то доступна бета-версия Expression Blend 4, Silverlight 4 RC, а также небольшая документация!&lt;/p&gt;
&lt;p&gt;Скачать уже можно &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=6f014e07-0053-4aca-84a7-cd82f9aa989f"&gt;тут&lt;/a&gt;, а также ознакомиться со &lt;a target="_blank" href="http://go2.wordpress.com/?id=725X1342&amp;amp;site=adamkinney.wordpress.com&amp;amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2FF%2FB%2FE%2FFBEDFA0A-9CC4-4297-A82A-ABCC0BFA165C%2FExpressionBlend4BetaOverview.docx"&gt;списком&lt;/a&gt; нововведений.&lt;/p&gt;
&lt;p&gt;Коротко о возможностях:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Поддержка разработки приложений Silverlight 4 и WPF 4 &lt;/li&gt;
&lt;li&gt;Совместимость с VS2010 &lt;/li&gt;
&lt;li&gt;Сохранение возможностей открытия и разработки приложений Silverlight 3 и WPF 3.5 с&amp;nbsp; Service Pack 1(SP1) &lt;/li&gt;
&lt;li&gt;Еще меньше кода и еще больше новых поведений (behaviors) для всех типов приложений &lt;/li&gt;
&lt;li&gt;Условные поведения! &lt;/li&gt;
&lt;li&gt;Поддержка разработки приложений с использованием шаблона проектирования MVVM (в Blend? Не верится, да? :)) &lt;/li&gt;
&lt;li&gt;SketchStyles &amp;ndash; стили по умолчанию для SketchFlow приложений &lt;/li&gt;
&lt;li&gt;Создание Word-отчетов с включением отзывов &lt;/li&gt;
&lt;li&gt;Улучшение в сфере стайлинга элементов управления &lt;/li&gt;
&lt;li&gt;Сумасшедшая новинка PathListBox&amp;nbsp; - позволяет размещать дочерные элементы совершенно свободным образом на основе прикрепляемого контура &lt;/li&gt;
&lt;li&gt;Множество новых нестандартных элементов в виде дуг, разного вида полигонов, стрелочек, облачных форм (подумаем об Azure-стиле? :) ) &lt;/li&gt;
&lt;li&gt;9 новых эффектов на базе пиксельных шейдеров &lt;/li&gt;
&lt;li&gt;Эффекты перехода (Transition effects) &lt;/li&gt;
&lt;li&gt;Data Store &amp;ndash; промежуточное хранилище данных для переменных, используемых различными частями приложения &lt;/li&gt;
&lt;li&gt;Улучшения импорта из продуктов Adobe &lt;/li&gt;
&lt;li&gt;Запуск проекта с помощью Ctrl+F5 (просьба не удивляться:)) &lt;/li&gt;
&lt;li&gt;Упрощение трансформаций с помощью CompositeTransform &lt;/li&gt;
&lt;li&gt;Хотелось бы завершить список самой впечатляющей возможностью - разработкой приложений под Windows Phone. Необходим Expression Blend SDK Preview for Windows Phone и Expression Blend Add-in Preview for Windows Phone. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Вроде бы казалось что Blend 3 вышел летом, и что же можно придумать и реализовать за такой короткий срок?&amp;nbsp; Но, поверьте, это еще не все нововведения. Так что всем тем, кто заинтригован &amp;ndash; читаем документацию и устанавливаем новинки. Как уже написала, загрузить можно по адресам:&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=6f014e07-0053-4aca-84a7-cd82f9aa989f"&gt;Expression Blend 4 Beta&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://go.microsoft.com/fwlink/?linkid=169417"&gt;Silverlight 4 RC&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://dev.net.ua/aggbug.aspx?PostID=9497" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://dev.net.ua/blogs/helen/archive/2010/03/15/9497.aspx"&gt;Expression Blend 4 Beta&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Анимируем бабочек в Expression Blend</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2010/03/04/animiruem-babochek-v-expression-blend.aspx</link><pubDate>Thu, 04 Mar 2010 15:32:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:45387</guid><dc:creator>kichinsky</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;Накануне мартовского праздника (да и весна началась!) мы будем учиться анимировать бабочек.&lt;/p&gt;
&lt;h4&gt;Задача&lt;/h4&gt;
&lt;p&gt;В первом приближении задачу можно поставить следующим образом: созданить анимацию бабочки, машущей крыльями. &lt;/p&gt;
&lt;h4&gt;Препарирование бабочки&lt;/h4&gt;
&lt;p&gt;Для работы нам понадобится изображение бабочки, желательно, натуралистичное (за готовыми изображениями направляю в интернеты ;), в png и с прозрачным фоном, например, такое:&lt;/p&gt;
&lt;p&gt;&lt;img height="128" width="128" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/Morpho-Diana-icon_3.png" alt="Morpho-Diana-icon" border="0" title="Morpho-Diana-icon" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Чтобы бабочка &amp;ldquo;махала&amp;rdquo; крыльями, это изображение необходимо разрезать не две части и сохранить как отдельные картинки:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="103" width="66" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/Diana%201_3.png" alt="Diana 1" border="0" title="Diana 1" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;и&amp;nbsp; &lt;img height="103" width="66" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/Diana%202_3.png" alt="Diana 2" border="0" title="Diana 2" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/p&gt;
&lt;h4&gt;User Control Butterfly&lt;/h4&gt;
&lt;p&gt;В проекте Silverlight в Expression Blend импортируем два изображения (можно напрямую перетащить на рабочее пространство):&lt;/p&gt;
&lt;p&gt;&lt;img height="120" width="148" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_5.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Выделив оба фрагмента, из контекстного меню выбираем &amp;ldquo;&lt;em&gt;Make Into UserControl&lt;/em&gt;&amp;rdquo; (или просто F8):&lt;/p&gt;
&lt;p&gt;&lt;img height="187" width="376" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_6.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;У нас появился новый контрол Butterfly.&lt;/p&gt;
&lt;h4&gt;Анимация бабочки&lt;/h4&gt;
&lt;p&gt;У нас будет три анимации: взлет бабочки, приземление бабочки и взмах крыльями.&lt;/p&gt;
&lt;p&gt;Предварительно в нашем контроле нужно сделать следующие изменения:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Дать названия каждому из крыльев&lt;/strong&gt;, например, &amp;ldquo;&lt;em&gt;Left&lt;/em&gt;&amp;rdquo; и &amp;ldquo;&lt;em&gt;Right&lt;/em&gt;&amp;rdquo; &amp;mdash; так будет проще ориентироваться. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Меняем положение центра&lt;/strong&gt;. Для этого в панели &amp;ldquo;&lt;em&gt;Transform&lt;/em&gt;&amp;rdquo; на вкладке &amp;ldquo;&lt;em&gt;Translate&lt;/em&gt;&amp;rdquo; выбираем: центральную правую точку для левого крыла и центральную левую для правого:       &lt;br /&gt;&lt;img height="124" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_9.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;       &lt;br /&gt;&lt;em&gt;(Аналогичное изменение модно сделать на вкладке &amp;ldquo;Center Point&amp;rdquo;: 1 и 0.5 для левого крыла, 0 и 0.5 &amp;mdash; для правого. Числа эти относительные: {0, 0} &amp;mdash; верхний левый угол объекта, {1, 1} &amp;mdash; нижний правый.) &lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Уменьшить масштаб&lt;/strong&gt;. Для этого в панели &amp;ldquo;&lt;em&gt;Transform&lt;/em&gt;&amp;rdquo; открываем вкладку &amp;ldquo;&lt;em&gt;Scale&lt;/em&gt;&amp;rdquo; и для каждого из крыльев выставляем значения 0.75 для X и Y:       &lt;br /&gt;&lt;img height="125" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_14.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;img height="125" width="156" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_15.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Меняем положение центра проекции&lt;/strong&gt;. Для этого в панели &amp;ldquo;&lt;em&gt;Transform&lt;/em&gt;&amp;rdquo; в части &amp;ldquo;&lt;em&gt;Projection&lt;/em&gt;&amp;rdquo; на вкладке &amp;ldquo;&lt;em&gt;Center of Rotation&lt;/em&gt;&amp;rdquo; выставляем значения, аналогичные п.2: 1 и 0.5 для левого крыла, 0 и 0.5 &amp;mdash; для правого       &lt;br /&gt;&lt;img height="119" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_18.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&amp;nbsp; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Предварительная настройка окончена.&lt;/p&gt;
&lt;h5&gt;Взлет и посадка&lt;/h5&gt;
&lt;p&gt;Анимации взлета и посадки будут довольно простыми: при взлете бабочка увеличивается в размере, поднимает и опускает крылья; при посадке &amp;mdash; уменьшается, поднимает и опускает крылья.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Начнем со взлета&lt;/strong&gt;. Переходим в панель &amp;ldquo;&lt;em&gt;Objects and Timeline&lt;/em&gt;&amp;rdquo;, нажимаем на плюсик для создания новой анимации StoryBoard:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_23.png"&gt;&lt;img height="86" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_thumb_7.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;img height="140" width="354" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_26.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;При этом рабочая область немного изменится &amp;mdash; появится линейка времени для записи анимации:&lt;img height="363" width="500" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_29.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;(В принципе, можно переключить рабочее пространство в режим анимации &amp;mdash; F6 или Windows &amp;rarr; Workspaces &amp;rarr; Animation).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Для взлета достаточно ~0.5 секунды. Выбираем первое крыло, ставим текущее время на 0.5:&lt;/p&gt;
&lt;p&gt;&lt;img height="154" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_34.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;На вкладке &amp;ldquo;&lt;em&gt;Scale&lt;/em&gt;&amp;rdquo; панели &amp;ldquo;&lt;em&gt;Transform&lt;/em&gt;&amp;rdquo; выставляем значения X и Y в 1:&lt;/p&gt;
&lt;p&gt;&lt;img height="121" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_37.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Аналогичную операцию проделываем для второго крыла. &lt;/p&gt;
&lt;p&gt;При этом на линейке времени вы увидите отметки, что в некоторые моменты времени происходят изменения (если раскрыть объекты, можно увидеть, какие именно свойства изменены):&lt;/p&gt;
&lt;p&gt;&lt;img height="273" width="246" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_40.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Если проиграть анимацию, бабочка увеличивается в размере.&lt;/p&gt;
&lt;p&gt;Давайте теперь добавим взмахи крыльями. Выделим момент времени ~0.25 секунды, &amp;ldquo;Transform&amp;rdquo; &amp;rarr; &amp;ldquo;Projection&amp;rdquo; &amp;rarr; &amp;ldquo;Rotation&amp;rdquo;, ставим Y=-70 для левого крыла и Y=70 для правого:&lt;/p&gt;
&lt;p&gt;&lt;img height="125" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_43.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;При этом бабочка должна немного &amp;ldquo;сжаться&amp;rdquo;:&lt;/p&gt;
&lt;p&gt;&lt;img height="131" width="157" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_46.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Можно запустить анимацию и посмотреть, что получилось. На самом деле бабочка поднимается, еще не успев оттолкнуться крыльями, поэтому изменение размера нужно сделать после подъема крыльев.&lt;/p&gt;
&lt;p&gt;Самый простой способ внести изменение &amp;mdash; выбрать нулевой момент времени и для каждого из крыльев добавить KeyFrame (овал с плюсом):&lt;/p&gt;
&lt;p&gt;&lt;img height="231" width="272" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_51.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Для удобства внизу можно поменять масштаб временной линейки.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Далее для RenderTransform каждого из крыльев перемещаем отметки на временной шкале в нужные моменты:&lt;/p&gt;
&lt;p&gt;&lt;img height="233" width="269" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_54.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Теперь стало получше ;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Продолжим посадкой. &lt;/strong&gt;Все практически аналогично взлету, только наоборот. Для этого создадим новый StoryBoard &amp;ldquo;Down&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Чтобы сильно не повторяться, сделаем дупликат (Duplicate) и переименуем в &amp;ldquo;Down&amp;rdquo;:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="166" width="271" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_60.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Далее нужно поправить изменение масштабов (RenderTransform для каждого из крыльев): начать с 1 и закончить 0.75:&lt;/p&gt;
&lt;p&gt;&lt;img height="223" width="274" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_66.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;h5&gt;Полет нормальный&lt;/h5&gt;
&lt;p&gt;Делаем еще один дупликат, называем &amp;ldquo;Fly&amp;rdquo;. Удаляем RenderTransform для каждого из крыльев:&lt;/p&gt;
&lt;p&gt;&lt;img height="193" width="274" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_69.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Сжимаем по времени:&lt;/p&gt;
&lt;p&gt;&lt;img height="172" width="300" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlend_180/image_47.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;На этом анимации закрываем.&lt;/p&gt;
&lt;h4&gt;Обидеть бабочку каждый может&lt;/h4&gt;
&lt;p&gt;Следующий шаг &amp;mdash; заставить анимации работать последовательно, а бабочку летать.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Тут нужно было бы воскликнуть: &amp;ldquo;Открываем Visual Studio и лезем в код&amp;rdquo;. Но мы воспользуемся редактором Expression Blend, благо много кода писать не придется.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Начнем с того, что нужно повесить событие, которое будет запускать анимацию по наведению курсора мыши на бабочку:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Butterfly()
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;	&lt;span style="color:#008000;"&gt;// Required to initialize variables&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;	InitializeComponent();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;	MouseEnter += ButterflyControl_MouseEnter;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;		
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ButterflyControl_MouseEnter(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, MouseEventArgs e)
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;	Start();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}&lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;Далее (раскрываю карты) нам мы будем запускать бабочку в полет в случайном направлении на случайную дистанцию и приземлять.&lt;/p&gt;
&lt;p&gt;Важный момент: при этом нужно блокировать (!) повторный запуск анимации. В данном случае мы обойдемся простым булевским флагом:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; isActive = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; IsActive
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; isActive; }
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ButterflyControl_MouseEnter(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, MouseEventArgs e)
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!isActive)
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      Start();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}&lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;Для управления полетом нужно будет добавить еще несколько параметров:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt; angle = 0;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt; direction = 0;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt; x = 0;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt; y = 0;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;        
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; counter;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; Random RND = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Random();&lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;Обратите внимание на то, что &lt;em&gt;RND&lt;/em&gt; сделан статическим, чтобы для разных бабочек не генерировать одни и те же последовательности.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;counter&lt;/em&gt; &amp;mdash; счетчик, сколько раз нужно проиграть анимацию &amp;ldquo;Fly&amp;quot;. На каждом таком шаге бабочка будет немного поворачиваться и пролетать некоторое расстояние в этом направлении.&lt;/p&gt;
&lt;h5&gt;Start(); и запуск полета&lt;/h5&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Start()
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   counter = Buttrefly.RND.Next(20) + 5;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   direction = 20 * Buttrefly.RND.NextDouble() - 10;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;         
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   Storyboard up = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Resources[&amp;quot;&lt;span style="color:#8b0000;"&gt;Up&lt;/span&gt;&amp;quot;] &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; Storyboard;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   up.Begin();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   Run();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   isActive = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}   &lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;direction&lt;/em&gt; &amp;mdash; на время полета постоянная случайная составляющая поворота бабочки, чтобы бабочка куда-то устремлялась, а не совсем хаотически летала.&lt;/p&gt;
&lt;p&gt;Обратите внимание, что мы цепляем запуск одного события за другое.&lt;/p&gt;
&lt;h5&gt;Run(); и приземление&lt;/h5&gt;
&lt;p&gt;Тут нам придется делать несколько важных вещей, поэтому рассмотрим по порядку. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Во-первых&lt;/strong&gt;, нам нужно будет применить три трансформации: поворот, перемещение по X и перемещение по Y, для каждой из них своя анимация:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Run()
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (counter &amp;gt; 0)
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   {
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       Storyboard sb = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Storyboard();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       DoubleAnimation rotateAnimation = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DoubleAnimation();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       DoubleAnimation moveXAnimation = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DoubleAnimation();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       DoubleAnimation moveYAnimation = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DoubleAnimation();&lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Во-вторых&lt;/strong&gt;, нужно установить время анимации (у нас оно было 0.3c), цель, к которой применяются анимации, и соответствующие свойства цели:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      rotateAnimation.Duration = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Duration(TimeSpan.FromSeconds(0.3));
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      moveXAnimation.Duration = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Duration(TimeSpan.FromSeconds(0.3));
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      moveYAnimation.Duration = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Duration(TimeSpan.FromSeconds(0.3));
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      Storyboard.SetTarget(rotateAnimation, LayoutRoot);
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      Storyboard.SetTarget(moveXAnimation, LayoutRoot);
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      Storyboard.SetTarget(moveYAnimation, LayoutRoot);
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      Storyboard.SetTargetProperty(rotateAnimation, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; PropertyPath(&amp;quot;&lt;span style="color:#8b0000;"&gt;(UIControl.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)&lt;/span&gt;&amp;quot;));
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      Storyboard.SetTargetProperty(moveXAnimation, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; PropertyPath(&amp;quot;&lt;span style="color:#8b0000;"&gt;(UIControl.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)&lt;/span&gt;&amp;quot;));
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      Storyboard.SetTargetProperty(moveYAnimation, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; PropertyPath(&amp;quot;&lt;span style="color:#8b0000;"&gt;(UIControl.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&lt;/span&gt;&amp;quot;));&lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;В PropertyPath указывается магический путь до нужного свойства ;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;В-третьих&lt;/strong&gt;, нужно вспомнить немного геометрии и прописать соответствующие трансформации, имея в виду, что угол задается в градусах и по часовой стрелке:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      rotateAnimation.From = angle;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      angle = angle + direction + (80 * Buttrefly.RND.NextDouble() - 40);
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      rotateAnimation.To = angle;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;                
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      moveXAnimation.From = x;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      x = x + (40 * Math.Sin((angle) / 180 * Math.PI));
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      moveXAnimation.To = x;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;                
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      moveYAnimation.From = y;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      y = y - (40 * Math.Cos((angle) / 180 * Math.PI));
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      moveYAnimation.To = y;&lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;В-четвертых&lt;/strong&gt;, объединяем анимации в одну StoryBoard, прописываем событие на завершение, запускаем анимацию трансформации и анимацию &amp;ldquo;Fly&amp;rdquo; махания крыльями и уменьшаем счетчик:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       sb.Children.Add(rotateAnimation);
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       sb.Children.Add(moveXAnimation);
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       sb.Children.Add(moveYAnimation);       
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       sb.Completed += &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; EventHandler(sb_Completed);
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       sb.Begin();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       (&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Resources[&amp;quot;&lt;span style="color:#8b0000;"&gt;Fly&lt;/span&gt;&amp;quot;] &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; Storyboard).Begin();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       counter--;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   }            
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}&lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;В-пятых&lt;/strong&gt;, приземляемся.&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; sb_Completed(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;{
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (counter &amp;gt; 0)
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   {
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       Run();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   }
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   {
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       (&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Resources[&amp;quot;&lt;span style="color:#8b0000;"&gt;Down&lt;/span&gt;&amp;quot;] &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; Storyboard).Begin();
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;       isActive = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   }
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;}&lt;/pre&gt;
&lt;/pre&gt;
&lt;p&gt;Готово.&lt;/p&gt;
&lt;p&gt;Кстати, убедитесь, что у вас в XAML-коде заданы заглушки для трансформаций, иначе они динамически не найдутся:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Grid&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x&lt;/span&gt;:&lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;RenderTransformOrigin&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;0.5,0.5&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Grid.RenderTransform&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TransformGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;          &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ScaleTransform&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;          &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SkewTransform&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;          &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;RotateTransform&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Angle&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;          &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TranslateTransform&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;      &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;TransformGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Grid.RenderTransform&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;h4&gt;Проверка&lt;/h4&gt;
&lt;p&gt;Разместите несколько Butterfly-контролов на главной странице и запускайте приложение. Теперь бабочки летают!&lt;/p&gt;
&lt;p&gt;
&lt;iframe width="500" frameborder="0" src="http://constantin.kichinsky.ru/projects/butterfly/Default.html" height="400" style="border-bottom-style:none;border-right-style:none;border-top-style:none;border-left-style:none;"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://constantin.kichinsky.ru/projects/butterfly/" title="http://constantin.kichinsky.ru/projects/butterfly/"&gt;http://constantin.kichinsky.ru/projects/butterfly/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Продолжение следует! Исходники приложения в прикрепленном архиве.&lt;/p&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://blogs.msdn.com/aggbug.aspx?PostID=9972884" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://blogs.msdn.com/kichinsky/archive/2010/03/04/How-to-create-animated-Butterflies-in-Expression-Blend.aspx"&gt;Анимируем бабочек в Expression Blend&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Типы проектов в Expression Blend 3 + SketchFlow</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2010/02/04/tipi-proektov-v-expression-blend-3-_2B00_-sketchflow.aspx</link><pubDate>Thu, 04 Feb 2010 14:49:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:45145</guid><dc:creator>kichinsky</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;Продолжаем &lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/12/15/Prototyping-an-interactive-banner-in-Expression-Blend-3-_2B00_-SketchFlow.aspx"&gt;разбираться&lt;/a&gt; с Expression Blend и прототипированием с помощью SketchFlow. Сегодня мы немного поговорим о выборе типа проекта.&lt;/p&gt;
&lt;h4&gt;Тип проекта: Target Platform vs. Demo Platform&lt;/h4&gt;
&lt;p&gt;Expression Blend позволяет создавать два типа проектов для SketchFlow: Silverlight и WPF. В чем между ними принципиальная разница?&lt;/p&gt;
&lt;p&gt;&lt;img height="151" width="504" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_3.png" alt="image" border="0" title="image" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Разница зависит от точки зрения, с которой вы смотрите на SketchFlow, и задачи, которая перед вами стоит.&lt;/p&gt;
&lt;h5&gt;Targer Platform&lt;/h5&gt;
&lt;p&gt;Если вы смотрите с точки зрения &lt;em&gt;целевой платформы&lt;/em&gt; (Target Platform), то этот выбор означает: &amp;ldquo;ага, делаем прототип для Silverlight&amp;rdquo; или &amp;ldquo;угу, делаем прототип для WPF&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;Тут все просто. В первом случае мы получаем прототип Silverlight-приложения для браузера, во втором &amp;mdash; протоип WPF-приложения для Windows. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_14.png"&gt;&lt;img height="210" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_thumb_5.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;margin:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_12.png"&gt;&lt;img height="210" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_thumb_4.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;margin:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Кстати, с точки зрения возможностей между ними будет определенная разница, определяемая как раз тем, что Silverlight != WPF. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;Demo Platform&lt;/h5&gt;
&lt;p&gt;Возможен и другой взгляд &amp;mdash; с точки зрения &lt;em&gt;демонстрационной платформы&lt;/em&gt; (Demo Platform). Что имеется в виду? &lt;/p&gt;
&lt;p&gt;Silverlight SketchFlow Application &amp;mdash; это &lt;strong&gt;прототип&lt;/strong&gt; &lt;em&gt;некоторого&lt;/em&gt; приложения, который &lt;strong&gt;можно посмотреть из браузера&lt;/strong&gt;. Прототип, на который можно послать ссылку заказчику. Прототип, который можно пощелкать и повертеть в любой среде, где работает Silverlight &amp;mdash; будь то MacOS X + Safari или Windows + IE|Firefox|&amp;hellip;&lt;/p&gt;
&lt;p&gt;WPF SketchFlow Application &amp;mdash; это &lt;strong&gt;прототип&lt;/strong&gt; &lt;em&gt;некоторого&lt;/em&gt; приложения, который &lt;strong&gt;можно посмотреть в Windows&lt;/strong&gt;. Прототип в виде исполняемого файла, упакованного экзешника. &lt;/p&gt;
&lt;p&gt;Такой подход открывает очень большие возможности для прототипирования в SketchFlow. Например&amp;hellip;&lt;/p&gt;
&lt;p&gt;Вы можете быстро сделать прототип браузерного приложения, которое по тем или иным причинам удобнее показывать в виде исполняемого файла:&lt;/p&gt;
&lt;p&gt;&lt;img height="425" width="504" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_17.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;margin:0px;display:inline;border-top:0px;border-right:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Или прототип виджета для какого-то специального сайта:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_19.png"&gt;&lt;img height="196" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_thumb_7.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;margin:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_21.png"&gt;&lt;img height="196" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_thumb_8.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;margin:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Или наоборот сделать прототип приложения для какой-нибудь ОС, который можно будет показывать в браузере:&lt;/p&gt;
&lt;p&gt;&lt;img height="430" width="504" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_24.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;margin:0px;display:inline;border-top:0px;border-right:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Можно быстро нарисовать прототип приложения для мобильного устройства, послать заказчику ссылку на silverlight-прототип в интернете, получить от него отзывы:&lt;/p&gt;
&lt;p&gt;&lt;img height="437" width="504" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/TwitterExpressionBlend3SketchFlow_12260/image_27.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;margin:0px;display:inline;border-top:0px;border-right:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;В принципе, форм-фактор, платформа и пр. могут быть любыми. Неизменными остаются легкость и скорость создания первичного прототипа, отработки идей и концепций. Время будет на вашей стороне ;)&lt;/p&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://blogs.msdn.com/aggbug.aspx?PostID=9958200" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://blogs.msdn.com/kichinsky/archive/2010/02/04/9958200.aspx"&gt;Типы проектов в Expression Blend 3 + SketchFlow&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Как нарисовать картонную коробочку в Expression Design?</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2009/12/23/kak-narisovatj-kartonnuyu-korobochku-v-expression-design_3F00_.aspx</link><pubDate>Wed, 23 Dec 2009 02:31:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:37914</guid><dc:creator>kichinsky</dc:creator><description>&lt;!--more--&gt;
&lt;p&gt;Близится Новый Год &amp;mdash; и пора упаковывать подарки :) Сегодня мы будем упаковывать их в картонные коробочки. Например, вот такие:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=177508"&gt;&lt;img height="184" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_3.png" alt="Silverlight 4 Beta Tools for Visual Studio 2010 " border="0" title="Silverlight 4 Beta Tools for Visual Studio 2010 " style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Или такие:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=169446"&gt;&lt;img height="151" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_13.png" alt="Microsoft Expression Blend for .NET 4 Preview " border="0" title="Microsoft Expression Blend for .NET 4 Preview " style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Поехали!&lt;/p&gt;
&lt;h4&gt;Шаг 1&lt;/h4&gt;
&lt;p&gt;Создаем новый рисунок в &lt;strong&gt;Expression Design 3&lt;/strong&gt;. Для удобства на первых этапах можно включить сетку (ctrl+&amp;rsquo;) и привязку к ней (ctrl+shift+&amp;rsquo;).&lt;/p&gt;
&lt;h4&gt;Шаг 2&lt;/h4&gt;
&lt;p&gt;Рисуем простой макет коробки с небольшими перспективными искажениями:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="123" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_31.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;В идеале, конечно, нужно, чтобы &amp;ldquo;параллельные&amp;rdquo; линии сходились в одной точке:&lt;/p&gt;
&lt;p&gt;&lt;img height="140" width="486" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_30.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;h3&gt;Шаг 3&lt;/h3&gt;
&lt;p&gt;Добавляем &amp;ldquo;крышку&amp;rdquo; для коробки, для этого копируем боковые стенки и подымаем их верхнюю границу.&lt;/p&gt;
&lt;p&gt;&lt;img height="133" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_29.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Опять-таки, в идеале линии нижних границ должны проходить через те же точки, что и выше.&lt;/p&gt;
&lt;p style="BORDER-BOTTOM:#ccc 1px dashed;BORDER-LEFT:#ccc 1px dashed;PADDING-BOTTOM:5px;PADDING-LEFT:5px;PADDING-RIGHT:5px;BACKGROUND:#ffe;BORDER-TOP:#ccc 1px dashed;BORDER-RIGHT:#ccc 1px dashed;PADDING-TOP:5px;"&gt;&lt;strong&gt;Tips and Tricks&lt;/strong&gt;: вместо того, чтобы &amp;ldquo;подымать&amp;rdquo; нижнюю границу, можно скопировать боковые стенки, провести линии уровня через точки схода параллельных линий и общую точку на ребре и далее сделать операцию &lt;em&gt;Path&lt;/em&gt; &amp;rarr; &lt;em&gt;Divide&lt;/em&gt; над копиямики стенок и линиями уровня. Далее останется только удалить лишние части. Это требует несколько больше времени, зато результат точнее.&lt;/p&gt;
&lt;h4&gt;Шаг 4&lt;/h4&gt;
&lt;p&gt;Сделаем промежуточную закраску, чтобы было лучше видно:&lt;/p&gt;
&lt;p&gt;&lt;img height="126" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_34.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Кстати, обратите внимание, что более светлая крышка визуально нежноко выступает (кажется больше) на фоне темного низа и общего белого фона.&lt;/p&gt;
&lt;h4&gt;Шаг 5&lt;/h4&gt;
&lt;p&gt;Вносим немножко нелинейности: добавляем на гранях дополнительные точки (на клавиатуре =) и немножко добавляем кривизны (Convert Anchor Point, Shift+C):&lt;/p&gt;
&lt;p&gt;&lt;img height="240" width="237" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_40.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;img height="240" width="189" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_39.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Аналогичные операции проделываем и для остальных граней:&lt;/p&gt;
&lt;p&gt;&lt;img height="124" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_43.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;(Точно-точно, любой подарок должен в пути немного помяться.)&lt;/p&gt;
&lt;h4&gt;Шаг 6&lt;/h4&gt;
&lt;p&gt;Самое время сделать заготовку для фона и текстуры. Создаем новый слой (можно назвать Box BackGround). &lt;/p&gt;
&lt;p&gt;Выделяем все элементы коробки, копируем и вставляем в новый слой. Не снимая выделение, делаем над ними операцию &lt;em&gt;Path &amp;rarr; Unite&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img height="126" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_64.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Слой фона переносим вниз и его пока можно заблокировать или даже скрыть.&lt;/p&gt;
&lt;h4&gt;Шаг 7&lt;/h4&gt;
&lt;p&gt;Добавляем градиентную закраску: примерно с теми же цветами, которые у нас уже есть, но тут важно придать нелинейность освещению коробки:&lt;/p&gt;
&lt;p&gt;&lt;img height="124" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_46.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;h4&gt;Шаг 8&lt;/h4&gt;
&lt;p&gt;Делаем блик на коробке. Для этого рисуем полигон (J) &amp;mdash; треугольник и меняем у него в свойствах Inner Depth на ненулевое значение, чтобы появились внутренние точки:&lt;/p&gt;
&lt;p&gt;&lt;img height="120" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_49.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Далее конвертируем фигуру в Path (Ctrl+Shift+O) и растаскиваем точки по углам коробки:&lt;/p&gt;
&lt;p&gt;&lt;img height="127" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_52.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Внутренние точки сводим достаточно близко в центральном углу:&lt;/p&gt;
&lt;p&gt;&lt;img height="125" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_55.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Добавляем эффект Gaussian Blur с радиусом 0,3. Opacity ставим в 50%.&lt;/p&gt;
&lt;p&gt;&lt;img height="125" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_58.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;h4&gt;Шаг 9&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Добавляем немного вмятин в уголках. Для этого с помощью пера (Pen, P) рисуем в уголках небольшие загогулины:&lt;/p&gt;
&lt;p&gt;&lt;img height="178" width="111" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_67.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&amp;nbsp;&lt;img height="192" width="140" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_72.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Добавляем к ним размытие через эффект Gaussian Blur с радиусом 1:&lt;/p&gt;
&lt;p&gt;&lt;img height="122" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_75.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/p&gt;
&lt;h4&gt;Шаг 10&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Вспоминаем, что мы хотели разместить в коробке :)&lt;/p&gt;
&lt;h4&gt;Шаг 11&lt;/h4&gt;
&lt;p&gt;Вспомнив, позволяем этим мыслям немножко проявиться:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="141" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_81.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Далее масштабируем символы (или любые другие фигуры) 
&lt;/p&gt;
&lt;p&gt;в соответствующих местах, не забывая про перспективное искажение (для более точного изменения лучше перевести в кривые):&lt;/p&gt;
&lt;p&gt;&lt;img height="124" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_84.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Еще немного деталей:&lt;/p&gt;
&lt;p&gt;&lt;img height="127" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_87.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Шаг 12&lt;/h4&gt;
&lt;p&gt;Добавляем светимости внутреннему содержимому: копируем наш символ, нижней версии добавляем размытие Gaussian Blur (radius = 1,5), а для верхней Opacity делаем 50%.&lt;/p&gt;
&lt;p&gt;&lt;img height="125" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_93.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;h4&gt;Шаг 13&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Выделяем боковые грани крышки, копируем, объединяем (&lt;em&gt;Path &amp;rarr; Unite&lt;/em&gt;), размещаем под оригиналы:&lt;/p&gt;
&lt;p&gt;&lt;img height="124" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_96.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Добавляем тень (Offset 1, Softness 2), направляем ее вниз (Angle = 270) и выставляем в цвете оттенок красного (Opacity 0,2):&lt;/p&gt;
&lt;p&gt;&lt;img height="119" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_99.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Шаг 14&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Добавляем текстуру. Для этого создадим отдельный слой (Texture) и скопируем в него заготовку из фона. Выставляем Opacity 10% и делаем заливку подходящей текстурой:&lt;/p&gt;
&lt;p&gt;&lt;img height="184" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_102.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;&lt;img height="125" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_105.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;h4&gt;Шаг 15&lt;/h4&gt;
&lt;p&gt;Перемещаемся на слой фона. Заготовку делим на две части (можно провести линию и сделать &lt;em&gt;Path&lt;/em&gt; &amp;rarr; &lt;em&gt;Divide&lt;/em&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img height="120" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_108.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Нижнюю часть делаем черной. Верхнюю красной. Обоим ставит размытие Gaussian Blur (raduis = 2):&lt;/p&gt;
&lt;p&gt;&lt;img height="120" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_111.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Нижней части можно также немножко добавить тени.&lt;/p&gt;
&lt;h4&gt;Шаг 16&lt;/h4&gt;
&lt;p&gt;Добавляем еще несколько световых эффектов: копируем светящийся символ, немного увеличиваем в масштабе, увеличиваем прозрачность (Opacity 30%), увеличиваем размытие:&lt;/p&gt;
&lt;p&gt;&lt;img height="123" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_114.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Повторяем эту процедуру еще несколько раз, смещая копии немного вверх:&lt;/p&gt;
&lt;p&gt;&lt;img height="142" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_117.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Итоговый результат:&lt;/p&gt;
&lt;p&gt;&lt;img height="145" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionDesign_3E6C/image_128.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Исходные файлы и png-иконки всех трех картинок в приложении.&lt;/p&gt;
&lt;p&gt;p.s. Спасибо &lt;a href="http://dambs.ovh.org/"&gt;Ambroise Coutand&lt;/a&gt; за &lt;a href="http://vector.tutsplus.com/tutorials/icon-design/use-inkscape-to-create-a-grunge-rss-box-icon/"&gt;описанный подход&lt;/a&gt; к рисованию таких коробочек.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Напоминаю, что Expression Design студентам, школьникам и аспирантам доступен бесплатно по программе &lt;/strong&gt;&lt;a href="http://dreamspark.ru/"&gt;&lt;strong&gt;DreamSpark&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;Другие &amp;ldquo;рисовальные&amp;rdquo; посты&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/12/06/How-to-Create-Indented-Text-in-Expression-Design.aspx"&gt;Как нарисовать &lt;strong&gt;вдавленную надпись&lt;/strong&gt; в Expression Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/12/06/How-to-Draw-Elephant-in-Expression-Design.aspx"&gt;Как нарисовать &lt;strong&gt;слона&lt;/strong&gt; в Expression Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/12/03/how-to-draw-realistic-sphere-in-expression-design.aspx"&gt;Как нарисовать &lt;strong&gt;шарик&lt;/strong&gt; в Expression Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/08/21/How-to-Draw-RSS-Icon-in-Expresion-Design-3.aspx"&gt;Как нарисовать &lt;strong&gt;иконку RSS&lt;/strong&gt; в Expression Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/06/26/how_2D00_to-draw-twitter-icon-in-expression-design.aspx"&gt;Как нарисовать &lt;strong&gt;иконку для twitter&lt;/strong&gt;`а в Expression Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/08/22/How-to-draw-UFO-icon-in-Expression-Design.aspx"&gt;Как нарисовать &lt;strong&gt;летающую тарелку&lt;/strong&gt; в Expression Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://blogs.msdn.com/aggbug.aspx?PostID=9940359" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/12/23/How-to-Draw-Carton-Box-for-_2800_in_2900_-Expression-Design.aspx"&gt;Как нарисовать картонную коробочку в Expression Design?&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Прототипирование интерактивного баннера в Expression Blend 3 + SketchFlow</title><link>http://silverlighter.ru/blogs/silverlighter_blog/archive/2009/12/15/prototipirovanie-interaktivnogo-bannera-v-expression-blend-3-_2B00_-sketchflow.aspx</link><pubDate>Tue, 15 Dec 2009 09:37:00 GMT</pubDate><guid isPermaLink="false">db0946e7-466b-4a35-aa38-20ad9a6b5a39:37837</guid><dc:creator>kichinsky</dc:creator><description>&lt;!--more--&gt;
&lt;h4&gt;Прототипирование&lt;/h4&gt;
&lt;p&gt;&lt;img height="128" width="128" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_9.png" align="right" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Протопирирование&lt;/strong&gt; &amp;mdash; важный этап на пути создания готового продукта. Это именно то время, когда сырая и мутная идея начинает обретать признаки жизни, воплощается в реальность, кровь и плоть из битов и байтов, а также кнопочек и формочек :)&lt;/p&gt;
&lt;p&gt;Прототип, в отличие от идеи, уже можно потыркать, пощелкать, повертеть и покрутить. &lt;/p&gt;
&lt;p&gt;Имея хороший прототип, уже можно делать оценки, думать, что к чему, куда двигаться дальше, имеет ли идея право на жизнь.&lt;/p&gt;
&lt;p&gt;Ну и, конечно, борьба со временем, которого всегда не хватает &amp;mdash; &lt;strong&gt;прототип должен делаться быстро&lt;/strong&gt;. Не стоит вкладывать годы жизни в воспитание слона, только чтобы понять, что у него не вырастут крылья. Также нелепо вкладывать уйму усилий в то, что заведомо не сможет взлететь. (&lt;span style="color:#808080;"&gt;Впрочем, иногда встречаются страусы и пингвины.&lt;/span&gt; :)&lt;/p&gt;
&lt;p&gt;Cегодня мы начнем развлекаться с прототипированием в &lt;strong&gt;Expression Blend 3 + SketchFlow&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;Задача&lt;/h4&gt;
&lt;p&gt;Нужно быстро сделать прототип интерактивного баннера с четырьмя плашками (кнопками), по нажатию на которые открывается тот или иной экранчик.&lt;/p&gt;
&lt;p&gt;&lt;img height="124" width="275" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_8.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" /&gt;&amp;nbsp;&lt;strong&gt;Известны &lt;/strong&gt;названия плашек и разделов: &amp;ldquo;Сообщество&amp;rdquo;, &amp;ldquo;Приложения&amp;rdquo;, &amp;ldquo;Рынок&amp;rdquo;, &amp;ldquo;Выбор&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;Плюс &lt;em&gt;примерно&lt;/em&gt; понятны метафоры-контент, которые должны быть на каждом из экранов.&lt;/p&gt;
&lt;h4&gt;Заготовки&lt;/h4&gt;
&lt;p&gt;Не теряя много времени на прорисовку деталей и отточку всех графических элементов, делаем зарисовки основных экранов на бумаге или в любом графическом редакторе. (&lt;span style="color:#808080;"&gt;Paint из Windows 7 более чем подходит&lt;/span&gt; ;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:66721397-FF69-4ca6-AEC4-17E6B3208830:c196fa00-5d0e-4a5c-b17e-5fa1f8ce9e09" style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;"&gt;&lt;a href="http://cid-0a6384347ba6d1cc.skydrive.live.com/redir.aspx?page=browse&amp;amp;resid=A6384347BA6D1CC!150&amp;amp;ct=photos" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/InlineRepresentationddd074ac-4065-414d-a49b-2cc96e0cb4cc.jpg" alt="Просмотр альбома &amp;quot;Зарисовки прототипа баннера&amp;quot;" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt;
&lt;div style="TEXT-ALIGN:right;WIDTH:484px;"&gt;&lt;a href="http://cid-0a6384347ba6d1cc.skydrive.live.com/redir.aspx?page=browse&amp;amp;resid=A6384347BA6D1CC!150&amp;amp;ct=photos"&gt;Просмотреть полный альбом&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Теперь у нас пять экранов: загрузка + по экрану на каждый из разделов.&lt;/p&gt;
&lt;h4&gt;Рабочее пространство&lt;/h4&gt;
&lt;p&gt;Открываем Expression Blend 3 и создаем новый проект SketchFlow (я выбираю проект для Silverlight).&lt;/p&gt;
&lt;p&gt;&lt;img height="198" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_7.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;В дереве файлов проекта создаем новую папку для изображений (Sketch) и перетаскиваем в нее наши наброски:&lt;/p&gt;
&lt;p&gt;&lt;img height="159" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_20.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&amp;nbsp;&lt;img height="153" width="242" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_19.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;В рабочей области по центру внизу должно быть открыто окно &lt;strong&gt;SketchFlow Map &lt;/strong&gt;(если закрыто, открыть комбинацией клавиш &lt;em&gt;Shift + F12&lt;/em&gt; или через меню &lt;em&gt;Window&lt;/em&gt;). &lt;/p&gt;
&lt;p&gt;В остальном это обычное рабочее пространство для дизайна Silverlight-приложений.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="177" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_72.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;img height="146" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_18.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;SketchFlow Map наглядно показывает, какие есть экраны и компоненты и как они связаны друг с другом. Пока что у нас только один экран &lt;em&gt;Screen 1&lt;/em&gt;.&lt;/p&gt;
&lt;h4&gt;Базовый прототип&lt;/h4&gt;
&lt;p&gt;Изменяем размер экранчика до размеров картинки, переносим картинку в рабочую область. Название экрана в SketchFlow Map также можно переименовать, например, в &lt;em&gt;Loading&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img height="244" width="197" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_71.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&amp;nbsp;&amp;nbsp; &lt;img height="143" width="215" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_73.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p style="BORDER-BOTTOM:#ccc 1px dashed;BORDER-LEFT:#ccc 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#ffc;PADDING-LEFT:5px;PADDING-RIGHT:5px;BORDER-TOP:#ccc 1px dashed;BORDER-RIGHT:#ccc 1px dashed;PADDING-TOP:5px;"&gt;&lt;strong&gt;Tips and Tricks&lt;/strong&gt;: по умолчанию экраны создаются размером 640х480px. Если менять размер вручную неудобно, изменить эти параметры можно в меню &lt;em&gt;Tools&lt;/em&gt; &amp;rarr; &lt;em&gt;Options&lt;/em&gt; &amp;rarr; &lt;em&gt;SketchFlow&lt;/em&gt; и далее дефолтные значения для экранов (&lt;em&gt;Screen&lt;/em&gt;) или компонент экранов (&lt;em&gt;Component screen&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Создаем еще один экран:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;щелкам правой кнопкой в свободном месте Sketchflow Map &amp;rarr; &lt;em&gt;Create a Screen&lt;/em&gt;, &lt;em&gt;&lt;span style="color:#808080;"&gt;ИЛИ&lt;/span&gt;&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;наводим мышку на иконку существующего экрана, тянем за левую выпадающую иконку и получаем новый связанный экран &lt;br /&gt;&lt;img height="119" width="227" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_32.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;img height="118" width="230" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_31.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;, &lt;em&gt;&lt;span style="color:#808080;"&gt;ИЛИ&lt;/span&gt;&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;нажимаем на кнопку Create a Screen в нижнем меню: &lt;br /&gt;&lt;img height="37" width="240" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_35.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Обратите внимание, что во втором случае экран получается сразу связанным. &lt;/p&gt;
&lt;p&gt;Если скомпилировать приложение сейчас (а это полноценное Silverlight-приложение), то в панели &lt;em&gt;Navigate&lt;/em&gt; будет видно, что с текущего экрана &lt;em&gt;Loading&lt;/em&gt; можно перейти на экран &lt;em&gt;Screen 1&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img height="183" width="322" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_40.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;img height="181" width="170" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_41.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Возвращаемся в Expression Blend. Аналогично добавляем еще три экрана, перемещаем на них изображения, переименовываем, связываем.&lt;/p&gt;
&lt;p&gt;&lt;img height="123" width="461" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_46.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Чтобы добавить недостающие связи (&lt;span style="color:#808080;"&gt;напомню, что в нашем случае с любого экрана можно перейти на любой другой, кроме экрана загрузки&lt;/span&gt;), следует воспользоваться второй слева выпадающей иконкой:&lt;/p&gt;
&lt;p&gt;&lt;img height="115" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_59.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;img height="114" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_58.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Теперь все экраны связаны друг с другом:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="124" width="460" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_64.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;/p&gt;
&lt;p style="BORDER-BOTTOM:#ccc 1px dashed;BORDER-LEFT:#ccc 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#ffc;PADDING-LEFT:5px;PADDING-RIGHT:5px;BORDER-TOP:#ccc 1px dashed;BORDER-RIGHT:#ccc 1px dashed;PADDING-TOP:5px;"&gt;&lt;strong&gt;Tips and Tricks&lt;/strong&gt;: иконки экранов можно раскрашивать в разные цвета &amp;mdash; из контекстного меню или щелчком по правой выпадающей иконке (&lt;em&gt;Change visual tag&lt;/em&gt;).&lt;/p&gt;
&lt;p style="BORDER-BOTTOM:#ccc 1px dashed;BORDER-LEFT:#ccc 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#ffc;PADDING-LEFT:5px;PADDING-RIGHT:5px;BORDER-TOP:#ccc 1px dashed;BORDER-RIGHT:#ccc 1px dashed;PADDING-TOP:5px;"&gt;&lt;strong&gt;Tips and Tricks&lt;/strong&gt;: кстати, каждый тег имеет название, например, синий &amp;mdash; Navigation, зеленый &amp;mdash; Component. Названия и сам цвет можно менять через меню &lt;em&gt;Project&lt;/em&gt; &amp;rarr; &lt;em&gt;SketchFlow Project Settings&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Компилируем приложение, смотрим, что получилось:&lt;/p&gt;
&lt;p&gt;&lt;img height="149" width="262" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_61.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt; &lt;img height="151" width="221" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_60.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" /&gt;&lt;/p&gt;
&lt;p&gt;Здорово! Но не совсем. Плашки-то не кликаются!&lt;/p&gt;
&lt;h4&gt;Переходы, навигация&lt;/h4&gt;
&lt;p&gt;Чтобы добавить возможность переходить, щелкая по плашкам, нужно сделать совсем немного: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;рисуем поверх плашки прямоугольник (можно и кнопку, тут это непринципиально), &lt;/li&gt;
&lt;li&gt;убираем закраску, &lt;/li&gt;
&lt;li&gt;из контекстного меню &lt;em&gt;Navigate to&lt;/em&gt; &amp;rarr; выбираем, на какой экран нужно перейти.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img height="169" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_69.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;img height="177" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_70.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt; &lt;/p&gt;
&lt;p&gt;Проделываем аналогичную операцию для всех экранов и плашек.&lt;/p&gt;
&lt;p style="BORDER-BOTTOM:#ccc 1px dashed;BORDER-LEFT:#ccc 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#ffc;PADDING-LEFT:5px;PADDING-RIGHT:5px;BORDER-TOP:#ccc 1px dashed;BORDER-RIGHT:#ccc 1px dashed;PADDING-TOP:5px;"&gt;&lt;strong&gt;Tips and Tricks&lt;/strong&gt;: кстати, связи между экранами (стрелочки в SketchFlow Map), для которых назначены подобные переходы при этом добавляются автоматически (если их еще нет).&lt;/p&gt;
&lt;p&gt;Компилируем. Теперь можно щелкать по плашкам! Ура!&lt;/p&gt;
&lt;h4&gt;Еще немножко эффектов&lt;/h4&gt;
&lt;p&gt;1. Добавим кнопки &lt;em&gt;Learn more&amp;hellip; &lt;/em&gt;Здесь не должно быть чего-то сложного.&lt;/p&gt;
&lt;p style="BORDER-BOTTOM:#ccc 1px dashed;BORDER-LEFT:#ccc 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#ffc;PADDING-LEFT:5px;PADDING-RIGHT:5px;BORDER-TOP:#ccc 1px dashed;BORDER-RIGHT:#ccc 1px dashed;PADDING-TOP:5px;"&gt;&lt;strong&gt;Tips and Tricks&lt;/strong&gt;: для прототипов (Sketch) есть специальные &amp;ldquo;рисованные&amp;rdquo; стили всех основных контролов и элементов (от прямоугольников и кнопок до списков и табов) &amp;mdash; это позвляет убрать эффект восприятия прототипа как готового приложения.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_75.png"&gt;&lt;img height="168" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_thumb_25.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;2. До сих пор экранчики у нас сменялись по нажатию на плашку. Что делать, если хочется, чтобы они сменялись при наведении мыши?&lt;/p&gt;
&lt;p&gt;Когда мы добавляли к прямоугольникам (плашкам) возможность перехода на экран, к каждому из них было привязано соответствующее поведение (Behavior).&lt;span style="color:#808080;"&gt; (О самих поведениях (&lt;em&gt;Behaviors&lt;/em&gt;) и действиях (&lt;em&gt;Actions&lt;/em&gt;) я расскажу в другой раз. Они, кстати, применимы не только в SketchFlow-проектах.)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Поведения, привязанные к объектам можно увидеть в дереве объектов (в данном случае это &lt;em&gt;NavigateToScreenAction&lt;/em&gt;):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_77.png"&gt;&lt;img height="235" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_thumb_26.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Если его выбрать, справа откроется меню свойств этого поведения:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_81.png"&gt;&lt;img height="216" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_thumb_28.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Нас интересует событие, по которому срабатывает триггер (&lt;em&gt;EventName&lt;/em&gt;) &amp;mdash; сейчас это &lt;em&gt;MouseLeftButtonDown&lt;/em&gt;. Меняем на &lt;em&gt;MouseEnter:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_83.png"&gt;&lt;img height="89" width="244" src="http://blogs.msdn.com/blogfiles/kichinsky/WindowsLiveWriter/ExpressionBlendSketchFlow_13F7F/image_thumb_29.png" alt="image" border="0" title="image" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;MARGIN:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Повторяем операцию для всех плашек на всех экранах. &lt;/p&gt;
&lt;p style="BORDER-BOTTOM:#ccc 1px dashed;BORDER-LEFT:#ccc 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#ffc;PADDING-LEFT:5px;PADDING-RIGHT:5px;BORDER-TOP:#ccc 1px dashed;BORDER-RIGHT:#ccc 1px dashed;PADDING-TOP:5px;"&gt;&lt;strong&gt;Tips and Tricks&lt;/strong&gt;: в рамках одного экрана (файла) эту процедуру можно немного автоматизировать, если переключиться в режим кода и сделать соответствующие замены (Ctrl+H): &amp;lt;i:EventTrigger EventName=&amp;quot;&lt;em&gt;MouseLeftButtonDown&lt;/em&gt;&amp;quot;&amp;gt; меняем на &amp;lt;i:EventTrigger EventName=&amp;quot;&lt;em&gt;MouseEnter&lt;/em&gt;&amp;quot;&amp;gt;.&lt;/p&gt;
&lt;p&gt;Компилируем. Теперь по экранам баннера можно перемещаться, наводя мышь на плашки. Ура! Теперь можно показывать прототип заказчику.&lt;/p&gt;
&lt;p&gt;И заметьте: &lt;strong&gt;ни одной строчки кода&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Готовый проект можно найти в приложении к статье.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Напоминаю, что Expression Blend студентам, школьникам и аспирантам доступен бесплатно по программе&lt;/span&gt; &lt;/strong&gt;&lt;a href="http://dreamspark.ru/"&gt;&lt;strong&gt;&lt;span style="color:#0081e3;"&gt;DreamSpark&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="1" width="1" src="http://blogs.msdn.com/aggbug.aspx?PostID=9936950" alt="" /&gt;&lt;/p&gt;
&lt;p class="postuserinfo"&gt;Оригинал: &lt;a href="http://blogs.msdn.com/kichinsky/archive/2009/12/15/Prototyping-an-interactive-banner-in-Expression-Blend-3-_2B00_-SketchFlow.aspx"&gt;Прототипирование интерактивного баннера в Expression Blend 3 + SketchFlow&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>