Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .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-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Display,
// Пиксель.
Pixel,
// Стандартная точка принтера (1/72 дюйма).
Point,
// Дюйм.
Inch,
// Стандартная единица документа (1/300 дюйма).
Document,
// Миллиметр.
Millimeter
}
Чтобы проверить, как изменяется базовая единица измерения, модифицируйте имеющийся программный код так, как предлагается ниже.
private void MainForm_Paint(object sender, PaintEventArgs e) {
// Отображение прямоугольника а дюймах, а не в пикселях…
Graphics g = e.Graphics;
g.PageUnit = GraphicsUnit.Inch;
g.DrawRectangle(new Pen(Color.Red, 5), 0, 0, 100, 100);
}
Вы должны увидеть совершенно другой прямоугольник, как показано на рис. 20.4.

Рис. 20.4. Визуализация в дюймах
Причина того, что здесь более 90% области клиента формы занято темным (красным) цветом, заключается в указании пера "шириной" в 5 дюймов! Сам прямоугольник теперь имеет размеры 100×100 дюймов, и тот маленький светлый прямоугольник, который вы видите на рисунке в правом нижнем углу, является левым верхним углом большого внутреннего прямоугольника.
Изменение начала координат
Напомним, что при использовании координат и единиц измерения, предлагаемых по умолчанию, точка (0, 0) находится в левом верхнем углу соответствующей области. Часто это и является именно тем, что требуется, но что делать, если вам нужно поменять точку, относительно которой выполняется визуализация? Предположим, например, что ваше приложение всегда должно (по какой-то причине) оставлять пустой полосу шириной в 100 пикселей вдоль границы области клиента формы. Тогда вы должны гарантировать, чтобы все операции GDI+ выполнялись в соответствующих пределах внутренней области,
Один из подходов, который можно при этом использовать, заключается в добавлении смещения вручную. Конечно, утомительно добавлять значения смещениях каждой операции визуализации. Значительно удобнее (и проще) было бы использовать свойство, которое, по сути, говорило бы следующее: "Хотя я даю указание отобразить прямоугольник с началом координат в точке (0, 0), вы должны использовать для начала координат точку (100, 100)". Это должно сильно "упростить вам жизнь", поскольку вы сможете указать параметры размещения без модификаций,
В рамках GDI+ вы можете указать точку начала координат, установив значение трансформации с помощью метода TranslateTransform() (класса Graphics), позволяющего указать страничные координаты, которые будут применяться к вашим оригинальным мировым координатам, например:
void MainForm_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
// Установка смещения (100, 100) для страничных координат.
g.TranslateTransform(100, 100);
// Значениями мировых координат остаются (0, 0, 100, 100),
// но приборные координаты теперь равны (100, 100, 200, 200).
g.DrawRectangle(new Pen(Color.Red, 5), 0, 0, 100, 100);
}
Здесь вы устанавливаете для мировых координат значения (0, 0, 100, 100). Однако для страничных координат вы указали смещение (100, 100). Поэтому для приборных координат будут использоваться значений (100, 100, 200, 200). Таким образам, хотя вызов DrawRectangle() выглядит так, как будто вы размещаете прямоугольник в левом верхнем углу формы, результат будет выглядеть так, как показано на рис. 20.5.

Рис. 20.5. Результат применения смещения страницы
Чтобы вы имели возможность поэкспериментировать с некоторыми способами изменения координатной системы GDI+, в файле с исходным текстом примеров этой книги (для его загрузки посетите раздел загрузки Web-узла Apress, размещенного по адресу www.aprеss.com) есть пример приложения с именем CoorSystem. В этом приложении с помощью двух меню вы можете менять начало координат и единицу намерения (рис. 20.6).

Рис. 20.6. Изменение начала координат и единицы изменения
Теперь, когда вы имеете представление о роли базовых трансформаций для определения координат визуализации имеющегося GDI-типа на целевом устройстве, следующей задачей нашего обсуждения будет работа с цветовыми значениями.
Исходный код.Проект CoorSystem размещен в подкаталоге, соответствующем главе 20.
Определение цветовых значений
Многие методы визуализации, определенные классом Graphics, требуют от вас указания цвета, который должен использоваться в процессе рисования. Структура System.Drawing.Color представляет цветовую константу ARGB (от Alpha-Red-Green-Blue – альфа, красный, зеленый, синий). Функциональные возможности типа Color (цвет) представляются рядом статических доступных только для чтения свойств, возвращающих конкретный тип Color.
// Один из множества встроенных цветов…
Color с = Color.PapayaWhip;
Если стандартные цветные значения вам не подойдут, вы можете создать новый тип Color и указать для него значения A, R, G и В, используя метод FromArgb().
// Указание ARGB вручную.
Color myColor = Color.FromArgb(0, 255, 128, 64);
Используя метод FromName(), вы можете также сгенерировать тип Color по данному строковому значению. Строковый параметр должен при этом соответствовать одному из членов перечня KnownColor (который содержит значения для различных цветовых элементов Windows, например, таких как KnownColor.WindowFrame и KnownColor.WindowText).
// Получение Color по известному имени.
Color myColor = Color.FromName("Red") ;
Независимо от метода получения типа Color, с этим типом можно взаимодействовать с помощью его членов.
• GetBrightness() – возвращает значение яркости типа Color на основании измерения HSB (Hue-Saturation-Brightness – оттенок, насыщенность, яркость).
• GetSaturation() – возвращает значение насыщенности типа Color на основании измерения HSB.
• GetHue() – возвращает значение оттенка типа Color на основании измерения HSB.
• IsSystemColor – индикатор того, что данный тип Color является зарегистрированным системным цветом.
• A, R, G, В – возвращают значения, присвоенные для альфа, красной, зеленой и синей составляющих типа Color.
Класс ColorDialog
Чтобы обеспечить конечному пользователю приложения возможность конфигурировать тип Color, пространство имен System.Windows.Forms предлагает встроенный класс диалогового окна с именем ColorDialog (рис. 20.7).

Рис. 20.7. Диалоговое окно настройки цветов Windows Forms
Читать дальшеИнтервал:
Закладка: