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

Тут можно читать онлайн Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование КПК и смартфонов на .NET Compact Framework
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2007
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-91180-270-7
  • Рейтинг:
    4.88/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

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

Книга предназначена для начинающих программистов.

Программирование КПК и смартфонов на .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)

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

Интервал:

Закладка:

Сделать
Листинг 6.10

Bitmap bmp = new Bitmap(150, 90);

Graphics g = Graphics.FromImage(bmp);

Метод OnPaintкласса Formполучает в качестве параметра объект PaintEventArgs. Одним из членов данного объекта является объект Graphics, связанный с формой. Переопределяя метод OnPaintкласса Form, можно получить доступ к объекту Graphicsиз параметра PaintEventArgs, после чего можно работать с графикой в клиентской области формы. Вызов этого метода показан в листинге 6.11.

Листинг 6.11

Protected override void OnPaint(PaintEventArgs e) {

Graphics g = e.Graphics;

}

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

Метод DrawImageрисует заданный объект Imageв указанной позиции экрана. Всего существует четыре перегруженные версии метода. Но в самой простой его версии достаточно указать координаты выводимой картинки, как показано в листинге 6.12.

Листинг 6.12

g.DrawImage(myImage, 10, 10);

С помощью метода DrawImageможно выводить на экран не все изображение, а только его часть. В этом случае надо указать размеры прямоугольника, который определяет размеры выводимой области картинки, как показано в листинге 6.13. В примере используется перечисление GraphicsUnit.Pixel, которое позволяет указывать единицы измерения.

Листинг 6.13

Bitmap myBMP = new Bitmap(@"\windows\banner.gif");

Rectangle portion = new Rectangle(1, 1, 150, 25);

g.DrawImage(myBMP, 20, 220, portion, GraphicsUnit.Pixel);

Метод FillRectangleуже применялся при рассмотрении кистей. Метод DrawRectangleиспользует перо вместо кисти, поэтому на экран выводится незакрашенный прямоугольник.

Чтобы нарисовать достаточно сложную фигуру, можно задать массив точек и соединить их прямыми отрезками, после чего можно закрасить получившуюся фигуру. Для этого разработчик может использовать методы DrawPolygonи FillPolygon. В листинге 6.14 приведен код, который позволяет нарисовать простой ромб по указанным точкам.

Листинг 6.14

// Нарисуем ромб

// Зададим массив точек

Point[] arrPoint = {

new Point(150, 50),

new Point(200, 100),

new Point(150, 150),

new Point(100, 100),

new Point(150, 50),

};

g.DrawPolygon(bluePen, arrPoint);

Если все рассмотренные ранее методы объединить в одно приложение и затем запустить его, то на экране устройства будет отображено несколько графических образов, как показано на рис. 6.1.

Рис 61 Основные приемы работы с графикой Создание собственных методов - фото 39

Рис. 6.1. Основные приемы работы с графикой

Создание собственных методов DrawPie и FillPie

В данный момент .NET Compact Framework не поддерживает графические методы DrawPiеи FillPie, которые позволяли бы рисовать круговые секторы. Но можно создать свою версию этих методов, используя математические вычисления, как показано в листинге 6.15.

Листинг 6.15

///



///Рисуем закрашенный сектор

///Параметры функции

///g - Объект Graphics

///solidBrush - Кисть для закраски сегмента

///x,y - Координаты центра

///width - Ширина сегмента

///height - Высота сегмента

///startAngle - Значение начального угла

///endAngle - Значение конечного угла

///

private void FillPie(Graphics g, SolidBrush solidBrush, int x, int y,

int width, int height, double startAngle, double endAngle) {

double[] xAngle = new double[12];

double[] yAngle = new double[12];

double angleIncrement = (endAngle - startAngle) / 10;

double angle = startAngle;

for (int i = 0; i <= 10; i++) {

xAngle[i] = x + (Math.Cos(angle * (Math.PI / 180)) * (width / 2));

yAngle[i] = y + (Math.Sin(angle * (Math.PI / 180)) * (height / 2));

angle += angleIncrement;

}

xAngle[11] = x + (Math.Cos(endAngle * (Math.PI / 180)) * (width / 2));

yAngle[11] = y + (Math.Sin(endAngle * (Math.PI / 180)) * (height / 2));

Point[] anglePoints = {

new Point(x, y),

new Point((int)xAngle[0], (int)yAngle[0]),

new Point((int)xAngle[1], (int)yAngle[1]),

new Point((int)xAngle[2], (int)yAngle[2]),

new Point((int)xAngle[3], (int)yAngle[3]),

new Point((int)xAngle[4], (int)yAngle[4]),

new Point((int)xAngle[5], (int)yAngle[5]),

new Point((int)xAngle[6], (int)yAngle[6]),

new Point((int)xAngle[7], (int)yAngle[7]),

new Point((int)xAngle[8], (int)yAngle[8]),

new Point((int)xAngle[9], (int)yAngle[9]),

new Point((int)xAngle[10], (int)yAngle[10]),

new Point((int)xAngle[11], (int)yAngle[11])

};

g.FillPolygon(solidBrush, anglePoints);

}

///



/// Рисуем границы сектора

///g - Объект Graphics

///pen - Перо для рисования сегмента

///x,y - Центр сегмента

///width - Ширина сегмента

///height - Высота

///startAngle - Значение начального угла

///endAngle - Значение конечного угла

///

private void DrawPie(Graphics g, Pen pen, int x, int y,

int width, int height, double startAngle, double endAngle) {

double[] xAngle = new double[12];

double[] yAngle = new double[12];

double angleIncrement = (endAngle - startAngle) / 10;

double angle = startAngle;

for (int i = 0; i <= 10; i++) {

xAngle[i] = x + (Math.Cos(angle * (Math.PI / 180)) * (width /2));

yAngle[i] = y + (Math.Sin(angle * (Math.PI / 180)) * (height / 2));

angle += angleIncrement;

}

xAngle[11] = x + (Math.Cos(endAngle * (Math.PI / 180)) * (width / 2));

yAngle[11] = y + (Math.Sin(endAngle * (Math.PI / 180)) * (height /2));

Point[] anglePoints = {

new Point(x, y),

new Point((int)xAngle[0], (int)yAngle[0]),

new Point((int)xAngle[1], (int)yAngle[1]),

new Point((int)xAngle[2], (int)yAngle[2]),

new Point((int)xAngle[3], (int)yAngle[3]),

new Point((int)xAngle[4], (int)yAngle[4]),

new Point((int)xAngle[5], (int)yAngle[5]),

new Point((int)xAngle[6], (int)yAngle[6]),

new Point((int)xAngle[7], (int)yAngle[7]),

new Point((int)xAngle[8], (int)yAngle[8]),

new Point((int)xAngle[9], (int)yAngle[9]),

new Point((int)xAngle[10], (int)yAngle[10]),

new Point((int)xAngle[11], (int)yAngle[11])

};

g.DrawPolygon(pen, anglePoints);

}

private void Form1_Paint(object sender, PaintEventArgs e) {

// Выводим несколько секторов на экран

DrawPie(e.Graphics, new Pen(Color.Red), 130, 165, 100, 100, 0, 45);

FillPie(e.Graphics, new SolidBrush(Color.Green),

120, 160, 100, 100, 46, 90);

FillPie(e.Graphics, new SolidBrush(Color.Yellow),

120, 160, 100, 100, 91, 120);

FillPie(e.Graphics, new SolidBrush(Color.Blue),

120, 160, 100, 100, 121, 260);

FillPie(e.Graphics, new SolidBrush(Color.Red),

120, 160, 100, 100, 261, 360);

}

Результат работы этой программы показан на рис. 6.2.

Рис 62 Создание секторов Создание фонового рисунка для формы К сожалению - фото 40

Рис. 6.2. Создание секторов

Создание фонового рисунка для формы

К сожалению, .NET Compact Framework не поддерживает свойство BackgroundImage, которое создает фоновый рисунок для формы. Но каждый программист может восполнить данный пробел, переопределяя метод OnPaint.

Нужно создать новый проект и разместить на форме какой-нибудь элемент управления, например кнопку. Кнопка не будет выполнять никаких функций. Она потребуется лишь для демонстрации технологии. Также надо добавить в проект изображение, которое будет использоваться в качестве фона для формы. В нашем примере картинка будет внедрена в программу как ресурс, хотя можно загрузить ее из обычного графического файла. Чтобы все работало так, как запланировано, необходимо переопределить метод OnPaint(). Новый код метода приведен в листинге 6.16.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


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

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




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


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


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x