Система координат windows forms

Системы координат и преобразования Coordinate Systems and Transformations

GDI+ предоставляет универсальное преобразование и преобразование страницы, чтобы можно было преобразовывать (вращение, масштабирование, преобразование и т. д.) рисуемых элементов. GDI+ provides a world transformation and a page transformation so that you can transform (rotate, scale, translate, and so on) the items you draw. Эти два преобразования также позволяют работать в различных системах координат. The two transformations also allow you to work in a variety of coordinate systems.

в этом разделе In This Section

Типы систем координат Types of Coordinate Systems
Введение в системы координат и преобразования. Introduces coordinates systems and transformations.

Матричное представление преобразований Matrix Representation of Transformations
Описывает использование матриц для преобразования координат. Discusses using matrices for coordinate transformations.

Глобальные и локальные преобразования Global and Local Transformations
Обсуждаются глобальные и локальные преобразования. Discusses global and local transformations.

Справочник Reference

Matrix
Инкапсулирует аффинное представление с матричным преобразованием 3 на 3, представляющим геометрическое преобразование. Encapsulates a 3-by-3 affine matrix that represents a geometric transform.

Использование преобразований в управляемом GDI+ Using Transformations in Managed GDI+
Содержит список разделов, в которых содержатся дополнительные сведения об использовании преобразований матрицы. Provides a list of topics that provide more information about how to use matrix transformations.

Управляемый код GDI+ About GDI+ Managed Code
Содержит список разделов, описывающих графические конструкции, которые можно использовать в .NET Framework. Contains a list of topics describing the graphics constructs you can use in the .NET Framework.

Типы систем координат Types of Coordinate Systems

В GDI+ используются три координатных пространства: мир, страница и устройство. GDI+ uses three coordinate spaces: world, page, and device. Мировые координаты — это координаты, используемые для моделирования определенного графического мира, а также координаты, передаваемые методам в .NET Framework. World coordinates are the coordinates used to model a particular graphic world and are the coordinates you pass to methods in the .NET Framework. Координаты страницы относятся к системе координат, используемой областью рисования, такой как форма или элемент управления. Page coordinates refer to the coordinate system used by a drawing surface, such as a form or control. Координаты устройства — это координаты, используемые физическим устройством, которое рисуется, например экран или лист бумаги. Device coordinates are the coordinates used by the physical device being drawn on, such as a screen or sheet of paper. При выполнении вызова myGraphics.DrawLine(myPen, 0, 0, 160, 80) точки, передаваемые в DrawLine метод — (0, 0) и, (160, 80) находятся в мировом пространстве координат. When you make the call myGraphics.DrawLine(myPen, 0, 0, 160, 80) , the points that you pass to the DrawLine method— (0, 0) and (160, 80) —are in the world coordinate space. До того, как интерфейс GDI+ может нарисовать линию на экране, координаты проходят через последовательность преобразований. Before GDI+ can draw the line on the screen, the coordinates pass through a sequence of transformations. Одно преобразование, которое называется мировым преобразованием, преобразует мировые координаты в координаты страницы, а другое преобразование, называемое преобразованием страницы, преобразует координаты страницы в координаты устройства. One transformation, called the world transformation, converts world coordinates to page coordinates, and another transformation, called the page transformation, converts page coordinates to device coordinates.

Читайте также:  Список групп пользователей windows

Преобразования и системы координат Transforms and Coordinate Systems

Предположим, что вы хотите работать с системой координат, имеющей свою точку в тексте клиентской области, а не в левом верхнем углу. Suppose you want to work with a coordinate system that has its origin in the body of the client area rather than the upper-left corner. Предположим, например, что вы хотите, чтобы источник был 100 пикселей от левого края клиентской области и 50 пикселей от верхнего края клиентской области. Say, for example, that you want the origin to be 100 pixels from the left edge of the client area and 50 pixels from the top of the client area. На следующем рисунке показана такая система координат. The following illustration shows such a coordinate system.

Выполнив вызов myGraphics.DrawLine(myPen, 0, 0, 160, 80) , вы получите строку, показанную на следующем рисунке. When you make the call myGraphics.DrawLine(myPen, 0, 0, 160, 80) , you get the line shown in the following illustration.

Ниже приведены координаты конечных точек линии в трех координатных пространствах. The coordinates of the endpoints of your line in the three coordinate spaces are as follows:

World World (от 0 до 0) до (160, 80) (0, 0) to (160, 80)
Страница Page (100, 50) в (260, 130) (100, 50) to (260, 130)
Устройство Device (100, 50) в (260, 130) (100, 50) to (260, 130)

Обратите внимание, что координатное пространство страницы имеет свой источник в левом верхнем углу клиентской области. Это всегда будет так. Note that the page coordinate space has its origin at the upper-left corner of the client area; this will always be the case. Также обратите внимание, что поскольку единицей измерения является пиксель, координаты устройства совпадают с координатами страницы. Also note that because the unit of measure is the pixel, the device coordinates are the same as the page coordinates. Если задать для единицы измерения значение, отличное от пикселей (например, дюймы), то координаты устройства будут отличаться от координат на странице. If you set the unit of measure to something other than pixels (for example, inches), then the device coordinates will be different from the page coordinates.

Преобразование «мир», которое сопоставляет координаты мира с координатами страницы, хранится в Transform свойстве Graphics класса. The world transformation, which maps world coordinates to page coordinates, is held in the Transform property of the Graphics class. В предыдущем примере преобразование «мир» представляет собой единицы перевода 100 в направлении x и 50 единиц по оси y. In the preceding example, the world transformation is a translation 100 units in the x direction and 50 units in the y direction. В следующем примере задается универсальное преобразование Graphics объекта, а затем используется этот Graphics объект для отрисовки линии, показанной на предыдущем рисунке: The following example sets the world transformation of a Graphics object and then uses that Graphics object to draw the line shown in the preceding figure:

Читайте также:  Samba and windows domain

Преобразование страницы сопоставляет координаты страницы с координатами устройства. The page transformation maps page coordinates to device coordinates. GraphicsКласс предоставляет PageUnit PageScale Свойства и для управления преобразованием страницы. The Graphics class provides the PageUnit and PageScale properties for manipulating the page transformation. GraphicsКласс также предоставляет два свойства только для чтения, DpiX и DpiY , для проверки горизонтальной и вертикальной точек на дюйм устройства дисплея. The Graphics class also provides two read-only properties, DpiX and DpiY, for examining the horizontal and vertical dots per inch of the display device.

Свойство класса можно использовать, PageUnit Graphics чтобы указать единицу измерения, отличную от пикселя. You can use the PageUnit property of the Graphics class to specify a unit of measure other than the pixel.

Нельзя задать PageUnit для свойства значение World , так как это не физическая единица и вызовет исключение. You cannot set the PageUnit property to World, as this is not a physical unit and will cause an exception.

В следующем примере рисуется линия от (0, 0) до (2, 1), где точка (2, 1) — 2 дюйма справа и 1 дюйм вниз от точки (0, 0): The following example draws a line from (0, 0) to (2, 1), where the point (2, 1) is 2 inches to the right and 1 inch down from the point (0, 0):

Если вы не укажете толщину пера при создании пера, в предыдущем примере будет нарисована линия шириной в один дюйм. If you don’t specify a pen width when you construct your pen, the preceding example will draw a line that is one inch wide. Можно указать ширину пера во втором аргументе Pen конструктора: You can specify the pen width in the second argument to the Pen constructor:

Если предполагается, что устройство вывода имеет 96 точек на дюйм в горизонтальном направлении и 96 точек на дюйм в вертикальном направлении, конечные точки строки в предыдущем примере имеют следующие координаты в трех координатных пространствах: If we assume that the display device has 96 dots per inch in the horizontal direction and 96 dots per inch in the vertical direction, the endpoints of the line in the preceding example have the following coordinates in the three coordinate spaces:

World World (0, 0) на (2, 1) (0, 0) to (2, 1)
Страница Page (0, 0) на (2, 1) (0, 0) to (2, 1)
Устройство Device (от 0 до 0) до (192, 96) (0, 0) to (192, 96)

Обратите внимание, что поскольку источник пространства координат мира находится в левом верхнем углу клиентской области, координаты страницы совпадают с координатами мира. Note that because the origin of the world coordinate space is at the upper-left corner of the client area, the page coordinates are the same as the world coordinates.

Для получения различных эффектов можно сочетать преобразования «мир» и «страница». You can combine the world and page transformations to achieve a variety of effects. Например, предположим, что вы хотите использовать дюйма в качестве единицы измерения и хотите, чтобы источник координат был 2 дюйма от левого края клиентской области и 1/2 дюйма от верхней части клиентской области. For example, suppose you want to use inches as the unit of measure and you want the origin of your coordinate system to be 2 inches from the left edge of the client area and 1/2 inch from the top of the client area. В следующем примере устанавливаются преобразование «мир» и «страница» Graphics объекта, после чего рисуется строка от (0, 0) до (2, 1): The following example sets the world and page transformations of a Graphics object and then draws a line from (0, 0) to (2, 1):

Читайте также:  Как изменить размер оперативной памяти windows 10

На следующем рисунке показана линия и система координат. The following illustration shows the line and coordinate system.

Если предполагается, что устройство вывода имеет 96 точек на дюйм в горизонтальном направлении и 96 точек на дюйм в вертикальном направлении, конечные точки строки в предыдущем примере имеют следующие координаты в трех координатных пространствах: If we assume that the display device has 96 dots per inch in the horizontal direction and 96 dots per inch in the vertical direction, the endpoints of the line in the preceding example have the following coordinates in the three coordinate spaces:

Получить и задать координаты левого верхнего угла формы

1. Я нажимаю Button1 и на экран MessageBox.Show высвечиваются координаты формы. (левый верхний угол.)
Как это сделать?

2. Я ввожу в textbox1 координату X, в textBox2 координату Y нажимаю button2 и форма перемещается на введенные мною координаты.
Как это сделать?

Создать класс окно, имеющий координаты верхнего левого и нижнего правого угла, цвет фона
Создать класс окно, имеющий координаты верхнего левого и нижнего правого угла, цвет фона (указатель.

Как получить координаты курсора от левого верхнего угла текущей формы
Всем привет! У меня следующий вопрос: как получить координаты курсора от левого верхнего угла.

Получение координаты левого верхнего угла окна
Ребята, как получить текущее координаты левого верхнего угла окна, я использую следующее. RECT.

Координаты X,Y верхнего левого угла выделенной ячейки в DataGridView
Как вычислить?

Решение

Мне нужны только числовые значения.
Отдельно X, отдельно Y.

Программа пишет ее слитно X=432, Y =273

Извлекать сам цифры по индексу не могу, т.к. если координата станет двухзначной, то будет ошибка.

Добавлено через 16 минут
Pavel55,
Я хочу, чтобы когда открывалась дочерняя форма, она занимала те же самые координаты, что и родительская.
Вот что я сделал:

Но код не работает. Дочерняя форма просто появляется в верхнем левом углу экрана.

Добавлено через 1 час 20 минут
С this работает. А с указанием имени формы почему-то нет.

Тематические курсы и обучение профессиям онлайн
Профессия‌ С#-разработчик‌ (Skillbox)
Архитектор ПО (Skillbox)
Профессия Тестировщик (Skillbox)

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

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

Создать прямоугольник через канвас и задать его перемещение с левого верхнего угла в правый нижний
Требуется создать прямоугольник через канвас и задать его перемещение с левого верхнего угла в.

Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома
Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла.

Оцените статью