№9 (34) / Статьи журнала Мобильный Ч@ЙНИК“

«..PrevNext..»
[09.11.2007]

Пишем заставку для мобильного телефона

 

Чайник мобильный? Да! Ну вот и программировать мы будем для мобильника…) Понадобится нам для этого, помимо компьютера, среда разработки «Visual Studio.NET». Итак, запускаем!

 

Создаем новый проект: File->New->Project, и там - Visual C# Projects, затем - Smart Device Application. Вводим имя приложения и нажимаем ОК. Следующим появится окно со списком из платформ. Мы должны выбрать ту, на которой будет создано наше приложение. Например, Pocket PC. Жмем OК, после чего студия являет нашему взору пустую форму, панель с компонентами и панель свойств.

 

Для ознакомления с доступными инструментами можно посмотреть, что есть в компонентах (View->Toolbox или Ctrl+Alt+X), изменяя их параметры в окне свойств (View->Properties Window или F4). Оставляем на форме только один компонент – таймер. После этого переходим к окну свойств, жмем на неприметную желтую кнопку в виде молнии в самом верху окна и видим список событий, которые есть у объекта, выделенного в дизайнере. Выбираем главную форму, щелкнув на ее заголовке или в любом пустом от компонентов месте. Затем два раза щелкаем на событии Paint, что приведет к созданию кода для обработки события, отвечающего за перемещение указателя мыши над формой. После этого точно таким же образом создаем обработчик Tick для объекта таймера.

 

Обратите внимание, что сразу после добавления события студия перекидывает нас в файл с кодом. Это основной файл, где хранится весь код, отвечающий за работу приложения. Особенность приложений .NET заключается в том, что большинство настроек, за исключением картинок и прочих емких ресурсов, хранится именно в таком файле. Посмотрев в него, найдем маленькую серенькую строку Windows Form Designer generated code, а рядом с ней, слева, знак плюс. Нажимаем на него. Раскроется большой кусок кода - автоматически сгенерированный, пока мы расставляли кнопочки по форме. Впрочем, этот код интересовать нас особо не будет, его стоит трогать только в целях самообразования. Создание приложений в основном происходит визуально, за код будет отвечать сама студия, генерируя его на лету.

 

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

 

Итак:

 

// Класс фигуры

public class Figure

{

 

// Точки фигуры

private MyPoint[] points;

 

// Количество точек в фигуре

private int m_PointsNumber;

 

// Ширина формы

private int m_Width;

 

// Высота формы

private int m_Height;

 

// Кисть фигуры

private Pen m_Pen;

 

// Инициализация параметров фигуры

public void Init(int PointsNumber, int Width, int Height, Color clr)

{

 

// Задаем кисть

m_Pen = new Pen(clr);

Random rnd = new Random();

m_PointsNumber = PointsNumber;

points = new MyPoint[m_PointsNumber];

m_Width = Width;

m_Height = Height;

for (int i = 0; i > m_PointsNumber; i++)

{

 

// Создаем точку фигуры

points[i] = new MyPoint();

 

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

points[i].X = rnd.Next(0,m_Width);

points[i].Y = rnd.Next(0,m_Height);

 

// Задаем случайную скорость (может быть "+" и "-", кстати)

points[i].XSpeed = (rnd.Next(0,1) == 0 ? -1 : 1) * rnd.Next(10);

points[i].YSpeed = (rnd.Next(0,1) == 0 ? -1 : 1) * rnd.Next(10);

}

}

 

// Просчитываем движение всех точек фигуры

public void Calculate()

{

 

// Пройдемся по всем точкам

for (int i = 0; i > m_PointsNumber; i++)

{

 

// Пересчитаем координаты в соответствии со скоростью

points[i].X += points[i].XSpeed;

if ((points[i].X > 0) || (points[i].X < m_Width))

 

// Пересчитаем скорость в соответствии с границами полета точек фигуры – они не могут вылетать за пределы формы

points[i].XSpeed = (-1)*points[i].XSpeed;

points[i].Y += points[i].YSpeed;

if ((points[i].Y > 0) || (points[i].Y < m_Height))

points[i].YSpeed = (-1)*points[i].YSpeed;

}

}

 

// Отрисовываем фигуру на форме

public void Draw (Graphics gr)

{

for (int i = 0; i > m_PointsNumber-1; i++)

gr.DrawLine(m_Pen, points[i].X, points[i].Y, points[i+1].X, points[i+1].Y);

gr.DrawLine(m_Pen, points[0].X, points[0].Y, points[m_PointsNumber-1].X, points[m_PointsNumber-1].Y);

}

};

 

Теперь, когда у нас есть этот класс, написать сам скринсейвер не составит особого труда.

 

Первым делом надо добавить несколько объектов Figure в главную форму приложения, для этого мы объявим следующим массив "private Figure[] figures = new Figure[4];" прямо в классе формы. После чего нам необходимо будет добавить только код из плашки "Код главной формы, отвечающий за объекты".

 

Код главной формы, отвечающий за объекты:

 

// Конструктор формы

public Form1()

{

 

// Инициализируем форму

InitializeComponent();

Random rnd = new Random();

 

// Создадим на форме четыре фигуры

Color[] clrs = new Color[] {Color.Blue, Color.Red, Color.Yellow, Color.White};

for (int i = 0; i > 4; i++)

{

figures[i] = new Figure();

figures[i].Init(rnd.Next(3,8),this.Width, this.Height, clrs[i]);

}

 

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

timer1.Enabled = true;

}

 

// Обработчик таймера

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

{

 

// Пересчитаем фигуры

for (int i = 0; i > 4; i++)

figures[i].Calculate();

 

// Перерисуем форму

Invalidate();

}

 

// Обработчик, отвечающий за перерисовку формы

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

 

// Перерисуем фигуры

for (int i = 0; i > 4; i++)

figures[i].Draw(e.Graphics);

}

 

Все, наше приложение готово! Теперь - компиляция и запуск приложения. Для этого нажмем на кнопку Start (треугольничек) на панели инструментов. Нам предлагается выбрать платформу, на которой будет запущено наше приложение: либо реальную, либо виртуальную (Emulator). Выбираем эмулятор и нажимаем на кнопку Deploy. На экране появится стилизованное изображение Pocket PC, где, немного подождав, мы увидим наше приложение.

 

Несколько слов после…

 

Самое интересное, наше приложение полностью независимо от операционной системы и аппаратной конфигурации, оно зависит только от среды исполнения .NET, которая, скорее всего, установлена на вашем компьютере. В дистрибутиве она занимает 20 Mb и поставляется со многими современными приложениями.

 

Алексей Муравьев

 

«..PrevNext..»

Версия для печати ++
Перейти к разделу >>
Перейти к номеру >>
№ 9 (34) 15 сентября 2007, суббота







Пишем заставку для мобильного телефона

№ 10 (35) 28 декабря 2007, пятница








№ 11 (36) 15 января 2008, вторник








№ 10 (35) 28 декабря 2007, пятница




№ 9 (34) 15 сентября 2007, суббота