Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Тут можно читать онлайн Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Издательский дом Вильямс, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс
  • Год:
    2007
  • Город:
    Москва • Санкт-Петербург • Киев
  • ISBN:
    ISBN 5-8459-1124-9
  • Рейтинг:
    3.2/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - описание и краткое содержание, автор Эндрю Троелсен, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать книгу онлайн бесплатно, автор Эндрю Троелсен
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Graphics g = e.Graphics;

g.FillRectangle(Brushes.AntiqueWhite, dropRect);

// Вывод инструкции.

g.DrawString("Тащите этого парня сюда!", new Font("Times New Roman", 25), Brushes.Red, dropRect);

}

Запустив свое приложение, вы увидите окно, подобное показанному на рис. 20.19.

Рис 2019 Увлекательная игра Счастливый пижон Если вы сделаете все что - фото 262

Рис. 20.19. Увлекательная игра "Счастливый пижон"

Если вы сделаете все, что требуется для победы в игре, вы увидите окно "восхваления", показанное на рис. 20.20.

Рис 2020 У вас железные нервы Исходный кодПроект DraggingImages размещен в - фото 263

Рис 20.20. У вас железные нервы!

Исходный код.Проект DraggingImages размещен в подкаталоге, соответствующем главе 20.

Проверка попадания в область изображения

Проверить попадание в область типа, производного от Control (например, типа PictureBox очень просто, поскольку такой тип может сам отвечать на события мыши. Но что делать в том случае, когда нужно выполнять проверку попадания в область геометрического шаблона, отображенного на поверхности формы?

Для иллюстрации соответствующего процесса давайте снова рассмотрим предыдущее приложение BasicImages, чтобы наделить его некоторыми дополнительными возможностями. Нашей целью является выявление того, что пользователь щелкнул на одном из трех изображений. Выяснив, на каком именно изображении был выполнен щелчок, мы с помощью изменения свойства Text формы выделяем это изображение рамкой шириной в 5 пикселей.

Первым шагом должно быть определение нового множества членов-переменных типа Form, представляющих объекты Rectangle, для которых будет выполняться регистрация события MouseDown. При наступлении такого события нужно программно выяснить, находятся ли поступающие координаты (x, y) в рамках границ объектов Rectangle, используемых для визуализации объектов Image. Выяснив, что пользователь щелкнул на изображении, мы должны установить приватную булеву переменную (isImageClicked) равной true (истина) и указать, какое изображение было выбрано, используя для этого другую переменную и соответствующее значение из пользовательского перечня ClickedImage, определенного следующим образом.

enum ClickedImage {

ImageA, ImageB, ImageC

}

С учетом сказанного, вот как может выглядеть исходная модификация нашего класса формы.

public partial class MainForm: Form {

private Bitmap[] myImages = new Bitmap(3];

private Rectangle[] imageRects = new Rectangle[3];

private bool isImageClicked = false;

ClickedImage imageClicked = ClickedImage.ImageA;

public MainForm() {

// Установка прямоугольников.

imageRects[0] = new Rectangle(10, 10, 90, 90);

imageRects[1] = new Rectangle(10, 110, 90, 90);

imageRects[2] = new Rectangle (10, 210, 90, 90);

}

private void MainForm_MouseDown(object sender, MouseEventArgs e) {

// Получение координат (х, у) щелчка.

Point mousePt = new Point(e.X, e.Y);

// Проверка попадания указателя в любой из прямоугольников.

if (imageRects[0].Contains(mousePt)) {

isImageClicked = true;

imageClicked = ClickedImage.ImageA;

this.Text = "Вы щелкнули на изображении А";

} else if (imageRects[1].Contains(mousePt)) {

isImageClicked = true;

imageClicked = Clickedlmage.ImageB;

this.Text = "Вы щелкнули на изображении В";

} else if (imageRects[2].Contains(mousePt)) {

isImageClicked = true;

imageClicked = ClickedImage.ImageC;

this.Text = "Вы щелкнули на изображении C";

} else { // Попадания не обнаружено, использовать умолчания.

isImageClicked = false;

this.Text = "Проверка попаданий в зону изображения";

}

// Обновление области клиента.

Invalidate();

}

}

Обратите внимание на то, что при последней проверке член-переменная isImagеCliсked устанавливается равной false (ложь), поскольку пользователь не выполнил щелчка ни одном из трех изображений. Это важно, если вы хотите удалить контур у ранее выделенного изображения. После проверки всех элементов область клиента обновляется. Вот как выглядит модифицированный обработчик Paint.

private void MainForm_Paint(object sender, PaintEventArgs e) {

Graphics g = e.Graphics;

// Визуализация изображений.

// Прорисовка контура (при щелчке в соответствующем месте)

if (isImageClicked == true) {

Pen outline = new Pen(Color.Tomato, 5);

switch (imageClicked) {

case ClickedImage.ImageA:

g.DrawRectangle(outline, imageRects[0]);

break;

case Clickedlmage.ImageB:

g.DrawRectangle(outline, imageRects[1]);

break;

case ClickedImage.ImageC:

g.DrawRectangle(outline, imageRects[2]);

break;

default:

break;

}

}

}

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

Проверка попадания в область, отличную от прямоугольной

Теперь давайте выясним, как выполнить проверку попадания в область, форма которой отличается от прямоугольника? Предположим, что вы обновили свое приложение так, что теперь в нем отображается геометрический шаблон неправильной формы, и при щелчке на этом шаблоне его тоже требуется выделить с помощью контура (рис. 20.21).

Рис 2021 Проверка попадания в многоугольники Этот геометрический образ был - фото 264

Рис. 20.21. Проверка попадания в многоугольники

Этот геометрический образ был создан на форме с помощью метода FillPath() типа Graphics. Указанный метод получает на вход экземпляр объекта GraphicsPath, инкапсулирующий последовательность соединенных линий, кривых и строк. Добавление новых элементов в экземпляр GraphicsPath осуществляется с помощью последовательности связанных методов Add, как описывается в табл. 20.9.

Таблица 20.9.Связанные методы Add класса GraphicsPath

Методы Описание
AddArc() Добавляет к имеющейся фигуре эллиптическую дугу
AddBezier() AddBeziers() Добавляет к имеющейся фигуре кубическую кривую Безье (или множество кривых Безье)
AddClosedCurve() Добавляет к имеющейся фигуре замкнутую кривую
AddCurve() Добавляет к имеющейся фигуре кривую
AddEllipse() Добавляет к имеющейся фигуре эллипс
AddLine() AddLines() Добавляет к имеющейся фигуре сегмент линии
AddPath() Добавляет к имеющейся фигуре указанный GraphicsPath
AddPie() Добавляет к имеющейся фигуре сектор круга
AddPolygon() Добавляет к имеющейся фигуре многоугольник
AddRectangle() AddRectangles() Добавляет к имеющейся фигуре прямоугольник (или несколько прямоугольников)
AddString() Добавляет к имеющейся фигуре текстовую строку

Укажите using System.Drawing.Drawing2D и добавьте новый член GraphicsPath в класс Form. В рамках конструктора формы постройте множество элементов, представляющих соответствующую траекторию.

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

Интервал:

Закладка:

Сделать


Эндрю Троелсен читать все книги автора по порядку

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




ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание отзывы


Отзывы читателей о книге ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание, автор: Эндрю Троелсен. Читайте комментарии и мнения людей о произведении.


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

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