Изменение начала координат

Изменение начала координат

Напомним, что при использовании координат и единиц измерения, предлагаемых по умолчанию, точка (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.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

ОПЫТЫ eBay: С самого начала и без конца

Из книги Журнал «Компьютерра» №33 от 13 сентября 2005 года автора Журнал «Компьютерра»

ОПЫТЫ eBay: С самого начала и без конца Мы продолжаем серию публикаций, посвященную интернет-торговле. Сегодня речь пойдет о самом известном онлайн-аукционе eBay и особенностях работы с ним, которые следует учитывать обитателям просторов бСССР. - С.В. Аукцион eBay.com уверенно


С самого начала

Из книги Getting Real (на русском) [вычитывается] автора 37signals

С самого начала Создавайте ожидания, продумав то, какой опыт получит пользователь при первом запускеИгнорировать состояние «чистого листа» — одна из самых больших ошибок, которую вы можете сделать. «Чистый лист» — это первое впечатление от вашего приложения, и у вас не


17.4.2 Что надо знать до начала компиляции

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

17.4.2 Что надо знать до начала компиляции Пожалуй, самое первое, к чему нужно быть готовым, приступая к компиляции ядра, - это то, что процедура эта длительная. Так что не рассчитывайте скомпилировать ядро "между делом", в свободную минутку. Заранее планируйте, что потратите


Возраст начала

Из книги AutoCAD 2009 автора Орлов Андрей Александрович

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


Создание нового документа с помощью окна начала работы

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Создание нового документа с помощью окна начала работы Чтобы при создании нового файла использовалось окно начала работы, необходимо присвоить значение 1 системной переменной STARTUP. Для этого выполните следующие действия.1. Введите в командную строку название переменной


Перемещение начала координат канвы

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

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


Изменение масштаба системы координат

Из книги В социальных сетях. Twitter – 140 символов самовыражения автора Федотченко Юлия

Изменение масштаба системы координат Метод scale дает возможность изменить масштаб системы координат канвы в б?льшую или меньшую сторону:<контекст рисования>.scale(<масштаб по горизонтали>,<масштаб по вертикали>)Параметры этого метода задают масштаб для


Перемещение начала координат канвы

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

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


Изменение масштаба системы координат

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Изменение масштаба системы координат Метод scale дает возможность изменить масштаб системы координат канвы в б?льшую или меньшую сторону:<контекст рисования>.scale(<масштаб по горизонтали>,<масштаб по вертикали>)Параметры этого метода задают масштаб для


Начнем с самого начала

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Начнем с самого начала По смыслу Твиттер – это виртуальная площадка для общения: мгновенного распространения и получения сообщений длиной не больше 140 символов. А по форме – общение в SMS-формате, идею которого основатели компании перенесли из телефонов в Интернет и


Начала языка ActionScript

Из книги Взрыв обучения: Девять правил эффективного виртуального класса автора Мердок Мэттью

Начала языка ActionScript В этом разделе мы рассмотрим основные понятия языка программирования ActionScript — то, без чего нельзя приступать к написанию полноценных


21.4.4. Команды head и tail — вывод начала и хвоста файла

Из книги автора

21.4.4. Команды head и tail — вывод начала и хвоста файла Команда head выводит первые десять строк файла, а tail — последние десять. Количество строк может регулироваться с помощью параметра — n.Пример использования: head — n 10 /var/log/messages tail — n 15


Глава 2. Для начала о Sha-Bang

Из книги автора

Глава 2. Для начала о Sha-Bang В простейшем случае, скрипт -- это ни что иное, как простой список команд системы, записанный в файл. Создание скриптов поможет сохранить ваше время и силы, которые тратятся на ввод последовательности команд всякий раз, когда необходимо их