Чарльз Петцольд, Программируем Windows Phone 7

Вышел полный перевод на русский язык книги Чарльза Петцольда Программируем Windows Phone 7. Скачать: http://rusdpe.blob.core.windows.net/downloads/Programming_Windows_Phone_7_ru.pdf

Punycode конвертер на Silverlight 4

Как известно, в системе доменных имён разрешены только 26 букв латинского алфавита, цифры и дефис. Для использования Unicode символов в доменных именах предусмотрен стандартизованный метод преобразования — Punycode.
В связи с этим возникают различные проблемы, поскольку некоторые версии браузеров, устаревших программ и т.п. не поддерживают конвертацию Punycode. Существуют многочисленные варианты программ для конвертации. Лично мне не встречался только конвертер на Silverlight. Поэтому предлагаю известную библиотеку Libidin (распространяемую по лицензии GNU GPL) перенесенную мною в проект библиотеки для Silverlight 4.
Библиотека: http://cid-5e88cf06ab6ed171.office.live.com/self.aspx/.Public/SilverlightClassLibrary2.zip
Пример программы: http://cid-5e88cf06ab6ed171.office.live.com/self.aspx/.Public/SilverlightApplication7.zip
Библиотека умеет кодировать в Punycode и декодировать обратно.

Набор разработки Windows Azure для Windows Phone 7

Доступен набор разработки Windows Azure для Windows Phone 7. http://watoolkitwp7.codeplex.com/ Этот набор поможет в разработке мобильных приложений, использующих облачные сервисы на основе Windows Azure.

Трафарет Windows Phone 7 для дизайнера графических интерфейсов

На сайте www.uistencils.com появились металлические трафареты Windows Phone 7 для дизайнеров графических интерфейсов (http://www.uistencils.com/products/windows-phone-stencil-kit), а также эскизный планшет Windows Phone 7 (http://www.uistencils.com/products/windows-phone-sketch-pad). Это незаменимые инструменты дизайнера интерфейсов, особенно когда предстоит много эскизной работы и еще не дошло дело до рабочих прототипов, а все эскизы еще только на бумаге.

Набор кнопок ссылок на приложения WP7 в Marketplace

Вышел и доступен официальный набор кнопок (пять языков — английский, французский, немецкий, итальянский, испанский; три цветовых исполнения —  синий, зеленый, красный) ссылок на приложения WP7 в Marketplace, а также руководство по применению этих кнопок:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=25487479-4a3e-4a82-9a9e-320464a10039

Как конвертировать SVG в XAML для WP7 (и Silverlight)

Сегодня поговорим о том, как конвертировать SVG в XAML для WP7 (и Silverlight).
SVG и XAML достаточно близки по воей сути, оба формата имеют возможность работы с Canvas. Но WP7 (и Silverlight) не умеет работать с SVG, хотя в обновлении Mango обещана возможность использования SVG в контроле WebBrowser. И скорее всего прямое использование SVG в XAML еще не будет доступно.
Первый путь конвертирования:
Заходим на сайт http://www.graphspe.com/svg-to-xaml-converter#/Converter , загружаем исходный SVG файл, выбираем параметр Silverlight XAML, конвертируем. Конвертер не идеален — следует избегать наличия текста в SVG, некорректно работает с некоторыми конструкциями.
Путь второй:
С помощью IE9 и Microsoft XPS. Этот способ подсказан вот здесь: http://blogs.msdn.com/b/synergist/archive/2011/04/20/converting-svg-to-xaml-with-ie9-and-the-microsoft-xps-document-writer.aspx
Способ также не идеальный, подходит в основном для простых однотонных конструкций, например SVG файлов  с сайта http://thenounproject.com/ .
Последовательность действий:
1. Скачайте SVG файл на свой компьютер
2. Откройте SVG файл в IE9
3.  Распечатайте открытый файл с помощью Microsoft XPS Document Writer и сохраните результат в нужное место.
4. Смените расширение сохраненного файла с .xps на .zip .
5. Разархивируйте получившийся zip файл в отдельную папку.
6. В этой папке найдите файл Documents1Pages1.fpage и откройте его в Блокноте.
7. Скопируйте содержимое располагающееся между тегами <FixedPage>, включающее <Canvas/> и <Path/>.
8. Создайте новый элемент Canvas в Expression Blend и вставьте в него скопированное содержимое.

Захват экрана Windows Phone 7

В некоторых пользовательских мобильных приложениях возникает необходимость захвата изображения с экрана. Посмотрим как это можно выполнить в Windows Phone 7.
Создадим простенькое приложение, которое после нажатия на кнопку захвата изображения будет отображать в контроле Image захваченое изображение всего экрана.
Вы должны добавить в сборку следующую ссылку Microsoft.XNA.Framework для возможности работы с  MediaLibrary.
Также необходимо добавить следующие пространства имен
using System.IO;
using System.IO.IsolatedStorage;
using Microsoft.Phone;
using Microsoft.Xna.Framework.Media;
using System.Windows.Resources;
using System.Windows.Media.Imaging;
А теперь немного кода:

private void btnCaptureScreen_Click(object sender, RoutedEventArgs e)
{
//Захват изображения и загрузка этого изображения в отдельный контрол
WriteableBitmap bmp = new WriteableBitmap((int)this.ActualWidth, (int)this.ActualHeight);
bmp.Render(this, null);
bmp.Invalidate();
this.image1.Source = bmp;
}

Что ж, наше приложение уже умеет просто захватывать изображение и отображать результат в отдельном контроле.
Вот результат:
Захват экрана WP7
В следующем уроке мы изменим проект так, чтобы захваченое изображение можно было сохранить в виде файла в формате jpg.

А скачать готовый проект с кодом сегодняшнего урока можно здесь.

Делаем скин для эмулятора WP7

Сегодня поговорим о том как сделать скин для эмулятора WP7.
Возможность создания такой модификации отображения официально не поддерживается, поэтому всё описанное можно производить только на свой страх и риск.
Сам скин состоит из четырёх файлов, располагающихся в папке C:Program FilesMicrosoft XDE1.0 :
— WM7_Skin.xml
— WM7_Skin_Down.png
— WM7_Skin_Mask.png
— WM7_Skin_Up.png
Файл WM7_Skin_Mask.png представляет собой маску. Прозрачный цвет используется для описания тех областей, которые будут прозрачными. Белый цвет используется для описания формы устройства. Так же используются сплошные однотонные заливки различными цветами для описания областей размещения системных кнопок.
WM7_Skin_Up.png описывает вид эмулятора, в состоянии когда все системные кнопки не нажаты, а файл WM7_Skin_Down.png описывает вид эмулятора, при котором все системные кнопки не нажаты. Таким образом эти два изображения должны отличаться в местах расположения однотонных масочных заливок для кнопок в файле маски.
Файл WM7_Skin.xml служит для конфигурирования внешнего вида эмулятора. Содержание файла интуитивно понятно.
Например, строки
displayWidth=»480″
displayHeight=»800″
описывают нативный (физический) размер экрана эмулируемого устройства.
<button
toolTip=»Back»
onClick=»0x3B»
mappingColor=»0xF7941D»
/>
— это описание системной кнопки назад, содержит подсвечиваемое в эмуляторе название кнопки (его можно изменить, но поддерживаются только латинские буквы), код кнопки, цвет маски кнопки.
После создания собственного скина его можно загрузить в папку C:Program FilesMicrosoft XDE1.0 ; а если вы хотите использовать скин для предпросмотра в Visual Studio и Expression Blend, то созданный скин надо скопировать и в папку C:Program FilesMicrosoft SDKsWindows Phonev7.0Emulation (обязательно сохраните копии оригинальных файлов, чтобы иметь возможность вернуть стандартное представление).
Вот что у вас получится:

Слева вы видите предпросмотр XAML, а справа — непосредственно запущенный эмулятор.
Надо сказать, что энтузиасты создают скины с самого появления эмулятора. И можно скачать уже готовые скины из следующих мест:
http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/9be5e8ad-bfdb-4903-82d8-11bf4d2661ba/
http://www.jeff.wilcox.name/2011/04/focus-theme/
http://www.studentguru.gr/blogs/vangos/archive/2011/04/06/iphone-theme-for-windows-phone-emulator.aspx

 

Как пройти в библиотеку? Лучшая книга по программированию для WP7

Как пройти в библиотеку?
Лучшая книга по программированию для WP7

Стандартная ситуация — это разработчик мобильной платформы не владеющий C# и Silverlight. Если Вы владеете C# и Silverlight — Вы ватоматически можете стать разработчиком для Windows Phone 7 (хотя об XNA забывать не стоит).
Таким образом книги нужны в качестве справочников, инструмента глубокого погружения в технологию и конечно же для освоения технологии с нуля.
По разработке для WP7 я прочитал покрайней мере 4 книги:
— Henry Lee, Eugene Chuvyrov — Beginning Windows Phone 7 Development — 2010
— Nick Randolph — Professional Windows Phone 7 Application Development Building Windows Phone Applications and Games Using Silverlight and XNA — 2010
— Puja Pramudya — Silverlight for Windows Phone — 2011
— Charles Petzold — Programming Windows Phone 7 — 2010

Хочу сразу оговорить тот момент, что вариант на русском языке (часть глав, в электронном виде) есть только у книги Чарльза Петцольда.
Книга Петцольда мне стала симпатична с первых страниц, поскольку был знаком с его предыдущими книгами, такими как «Код».
Надо отдать должное Петцольду: все главы последовательно соответствуют навыкам усвоеным в предыдущей главе.Например книга Beginning Windows Phone 7 Development оказалась очень перегруженой и не последовательной: с одной стороны рассказываются прописные истины предназначенные явно не для продвинутого разработчика, с другой стороны уже в третьей главе речь идёт о применении облачных технологий (Azure).
Больше всего в книге Programming Windows Phone 7 нравится то, что автор достаточно сильно углубляется в основопологающие моменты  (векторная и растровая графика, XAML, DataBinding и т.д.), поэтому с помощью книги легко оценить возможности и нюансы платформы WP7. В этом плане книга Ника Рэндольфа близка по уровню, но несколько не однозначна развесовка частей посвященных Silverlight и XNA. У Рэндольфа основная часть по XNA содержится в 19 главе, у Петцольда это два раздела
Если сравнить книгу Петцольда с книгой Silverlight for Windows Phone, то книга Пуи Прамуди посвящена только технологии Silverlight и в очень сжатом формате (вариант для тех, кому не нужно углубляться в мелочи, которые можно почепнуть из других источников), хотя книга снабжена интересными примерами.
Я считаю, что надо иметь экземпляр книги Петцольда как подручное средство. Поскольку познавать мир WP7 с ним гораздо проще. Да и не возможно сразу охватить значимую часть возможностей платформы, но обратившись к книге Programming Windows Phone 7 по любой используемой в платформе технологии остается впечатление что не забыто никаких мелочей. Структура книги такова:
Первая часть часть посвящена основам разработки для WP7. В ней Вы узнаете как работать с ориентацией экрана, с изображениями, со стандартными датчиками (акселерометр) и сервисами (местоположение).
Вторая часть посвящена непосредственно Silverlight в WP7 — основной технологии для бизнес-приложений (хотя её конечно как и XNAможно применять для игр). Рассказывается о XAML-разметке, элементах и их свойствах, об ApplicationBar — меню приложения (как описывается меню и задаются используемые иконки меню), применении растровой и векторной графики, Data Binding, анимации, и достаточно интересных стандартных контролах — Panorama и Pivot.
Третья часть полностью посвящена технологии XNA. Это основная технология для игр, знакомая разработчикам по игровой платформе XBOX. Описано как описывается перемещение объектов, как работать с текстурами и спрайтами, с динамическими текстурами, как обрабатывать жесты в игре.
Рекомендую эту книгу.
Сергей Урусов