My-library.info
Все категории

Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework. Жанр: Программирование издательство -, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Программирование КПК и смартфонов на .NET Compact Framework
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
17 сентябрь 2019
Количество просмотров:
208
Читать онлайн
Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework

Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework краткое содержание

Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework - описание и краткое содержание, автор Александр Климов, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Мобильные устройства все активнее вторгаются в нашу жизнь. Карманные компьютеры и смартфоны давно утратили статус дорогих игрушек и перекочевали в разряд необходимых устройств. Значит, для них необходимо создавать программное обеспечение. Так почему вы должны оставаться в стороне?Прочитав эту книгу, вы получите знания, которые позволят вам уверенно создавать программы для карманных компьютеров и смартфонов. А огромное количество разнообразных примеров поможет быстро совершенствоваться и развиваться, обогащая свой опыт работы.Книга предназначена для начинающих программистов.

Программирование КПК и смартфонов на .NET Compact Framework читать онлайн бесплатно

Программирование КПК и смартфонов на .NET Compact Framework - читать книгу онлайн бесплатно, автор Александр Климов

Необходимо указать, что графический файл будет храниться в виде встроенного ресурса. Нужно щелкнуть правой кнопкой мыши на значке графического файла в окне Solution Explorer и выполнить команду контекстного меню Properties. В разделе Build Action по умолчанию используется пункт Content. Но в данном случае нужно указать пункт Embedded Resource.

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

Использование встроенных ресурсов

При работе программы необходимо получить доступ к графическому файлу из ресурсов и вывести изображение на экран. Для этого сначала необходимо получить ссылку на сборку. Соответствующий код приведен в листинге 11.1.

Листинг 11.1

// Получим ссылку на сборку

System.Reflection.Assembly execAssem =

 System.Reflection.Assembly.GetExecutingAssembly();

Метод System.Reflection.Assembly.GetExecutingAssembly возвращает сборку, из которой выполняется текущий код. Получив в программе ссылку на сборку, можно получить доступ к встроенным ресурсам, в том числе к изображению сыра. Метод GetManifestResourceStream позволяет извлекать указанный ресурс из сборки. Для этого нам надо указать имя файла и название пространства имен. В нашем случае это будет Bouncer.cheese.gif, как показано в листинге 11.2.

Листинг 11.2

/// <summary>

/// Изображение сыра

/// </summary>

private Image cheeseImage = null;


public Form1() {

 InitializeComponent();


 // Получим ссылку на сборку

 System.Reflection.Assembly execAssem =

 System.Reflection.Assembly.GetExecutingAssemblу();


 // Получим доступ к картинке с сыром

 cheeseImage = new System.Drawing.Bitmap(

  execAssem.GetManifestResourceStream(@"Bouncer.cheese.gif");

}

Вывод картинки на экран

При запуске программа загружает из ресурсов картинку. Теперь надо вывести изображение на экран. Для этого нужно воспользоваться событием Paint, как показано в листинге 11.3.

Листинг 11.3

private void Form1_Paint(object sender, PaintEventArgs e) {

 e.Graphics.DrawImage(cheeseImage, 0, 0);

}

После запуска программы в левом углу экрана будет отображен кусочек сыра (рис. 11.2).

Рис. 11.2. Вывод изображения на экран

Создание анимации

Теперь нужно научиться перемещать объект по экрану. Если это делать достаточно быстро, то у пользователя создается ощущение непрерывного воспроизведения анимации. Для этого следует создать метод updatePositions, который позволит перемещать изображение. Пока ограничимся движением вниз и вправо. Соответствующий код приведен в листинге 11.4.

Листинг 11.4

/// <summary>

/// Координата X для рисования сыра

/// </summary>

private int cx = 0;


/// <summary>

/// Координата Y для рисования сыра

/// </summary>

private int cy = 0;


private void updatePositions() {

 cx++;

 cy++;

}

Переменные cx и cy содержат текущие координаты кусочка сыра. Меняя значения этих координат, можно управлять расположением изображения на экране. Теперь нужно переписать код для события Form1_Paint, как это показано в листинге 11.5.

Листинг 11.5

private void Form1_Paint(object sender,

 System.Windows.Forms.PaintEventArgs e) {

 // Текущая позиция сыра

 e.Graphics.DrawImage(cheeseImage, cx, cy);

}

Теперь при каждом вызове метода Paint программа перерисовывает изображение сыра в указанном месте. Но программа должна самостоятельно перемещать изображение через определенные промежутки времени. Также нужно иметь возможность управлять скоростью перемещения картинки. Для этой задачи подойдет объект Timer. Соответствующий элемент нужно добавить на форму.

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

Но вернемся к настройкам таймера. Интервал срабатывания таймера должен составлять 50 миллисекунд, а свойство Enabled должно получить значение False. Когда таймер будет включен, код в методе Tick будет срабатывать 20 раз в секунду. При создании таймера нельзя для свойства Enable устанавливать значение True, так как метод timer1_Tick попытается отобразить изображения до того, как они будут загружены. Включать таймер можно только тогда, когда все необходимые картинки будут загружены, иначе программа выдаст сообщение об ошибке. В нашем примере таймер активируется в конструкторе формы после загрузки изображения сыра, как это показано в листинге 11.6.

Листинг 11.6

public Form1() {

 //

 // Required for Windows Form Designer support.

 //

 InitializeComponent();


 // Получим ссылку на сборку

 System.Reflection.Assembly execAssem =

  System.Reflection.Assembly.GetExecutingAssemblу();


 // Получим доступ к картинке с сыром

 cheeseImage = new System.Drawing.Bitmap

  (execAssem.GetManifestResourceStream(@"Bouncer.cheese.gif"));


 // Включаем таймер

 this.timer1.Enabled = true;

}

Теперь при запуске программы конструктор загружает картинку и включает таймер.

Настало время создать код для события Tick. Система перерисовывает содержимое экрана только при определенных условиях. Мы можем заставить систему перерисовать экран при каждом изменении местоположения картинки с помощью метода Invalidate. Таким образом, через определенные промежутки времени приложение меняет координаты изображения и обновляет экран, чтобы пользователь увидел картинку на новом месте. Соответствующий код приведен в листинге 11.7.

Листинг 11.7

private void timer1_Tick(object sender, System.EventArgs e) {

 updatePositions();

 Invalidate();

}

После запуска программы кусочек сыра по диагонали переместится в правый нижний угол экрана. Когда изображение достигнет края экрана, оно продолжит свое движение и скроется. При движении изображение сыра немного мерцает, что очень раздражает всех пользователей. В дальнейшем этот недостаток будет исправлен.

Отражения

Нужно запрограммировать обработку отражений объекта от стенок. Для этого надо отслеживать текущую позицию объекта и направление движения. Когда объект достигнет края стенки, нужно изменить направление движения. Для начала упростим код программы, отвечающей за отражения. Пусть координаты объекта при движении увеличиваются на единицу, когда кусочек сыра движется вправо и вниз, и уменьшаются на единицу при движении влево и вверх. Новый код метода updatePositions приведен в листинге 11.8.

Листинг 11.8

/// <summary>

/// Направление движения по оси X

/// </summary>

private bool goingRight = true;

/// <summary>

/// Направление движения по оси Y

/// </summary>

private bool goingDown = true;


private void updatePositions() {

 if (goingRight) {

  cx++;

 } else {

  cx--;

 }

 if ((cx + cheeseImage.Width) >= this.Width) {

  goingRight = false;

 }

 if (cx <= 0) {

  goingRight = true;

 }

 if (goingDown) {

  cy++;

 } else {

  cy--;

 }

 if ((cy + cheeseImage.Height ) >= this.Height) {

  goingDown = false;

 }

 if (cy <= 0) {

  goingDown = true;

 }

}

Обратите внимание на то, что в коде используются ширина и высота изображения и экрана. Не прописывая жестко величины размеров экрана и изображения, мы можем быть уверенными в том, что программа будет работать корректно в устройствах с любыми разрешением экрана и размерами картинки.

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

Управление скоростью движения объекта

Рассматривая поведение программы, вам, вероятно, хотелось бы ускорить процесс движения объекта. Чтобы игра была динамичной и увлекательной, нужно постепенно увеличивать сложность игрового процесса для пользователя. Одним из таких способов является ускорение движения. На данный момент кусочек сыра проходит расстояние от одного угла до другого за 5 секунд. Увеличить скорость перемещения картинки очень просто. Достаточно увеличивать значение текущей позиции объекта не на один пиксел, а на несколько. Нужно объявить новые переменные xSpeed и ySpeed, которые будут отвечать за увеличение или уменьшение скорости движения объекта. Соответствующий код приведен в листинге 11.9.


Александр Климов читать все книги автора по порядку

Александр Климов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


Программирование КПК и смартфонов на .NET Compact Framework отзывы

Отзывы читателей о книге Программирование КПК и смартфонов на .NET Compact Framework, автор: Александр Климов. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.