Координаты чертежа карты без искажений в C#

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

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

Этот метод сначала вычисляет пропорции (отношение ширины к высоте) для мира и прямоугольников устройства. Если мировое соотношение сторон больше, чем соотношение сторон устройства, то мировой прямоугольник относительно короткий и широкий по сравнению с прямоугольником устройства. В этом случае код вычисляет новую высоту, чтобы сделать мир прямоугольником выше, поэтому он имеет ту же форму, что и прямоугольник устройства. Он использует новую высоту, чтобы создать новый прямоугольник мира по центру.

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

В этот момент новый прямоугольник мира и прямоугольник устройства имеют одинаковые формы, поэтому программа просто вызывает метод SetTransformation, описанный в более ранняя публикация . Поскольку два прямоугольника имеют одинаковые пропорции, это преобразование не искажает область рисования.

Пример программы использует следующий код для демонстрации метода SetTransformationWithoutDisortion.

Этот код создает мировой прямоугольник с -1 & le; X & le; 1 и -1 & le; Y & le; 1, потому что это область, в которой метод DrawSmiley рисует смайлик. Это делает прямоугольник устройства подходящим для PictureBox за вычетом маржи. Затем он вызывает SetTransformationWithoutDisortion для сопоставления координат мира с координатами устройства и вызывает метод DrawSmiley.

Источник: http://csharphelper.com/blog/2016/02/map-drawing-coordinates-without-distortion-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *