2009-07-30 11 views
1

Вы знаете, как System.Drawing.Rectangle был заменен на System.Windows.Int32Rect? (Что касается форм без плавающей запятой ...)WPF: System.Windows.Int32Rect ---> System.Windows.Int32Point?

Есть ли аналогичный новый объект для целочисленной точки или размера? Если нет, я просто использую System.Drawing - но это похоже на небольшое сочетание двух платформ, которые мне не следует смешивать.

В любом случае, что вы думаете об этом?

+0

Есть ли причина, по которой вы не хотите использовать примитивы для рисования System.Windows? –

+0

Мне кажется, что использование System.Drawing - это шаг назад. Я имею в виду, что вся библиотека должна быть заменена новыми System.Windows, правильно? – Giffyguy

+0

Смотрите мой комментарий ниже. – Giffyguy

ответ

2

Элементы рисования в WPF сохраняют все значения измерений/местоположений в двухместных номерах - очевидно, все, кроме Int32Rect, как вы указали. Обоснование этой конструкции связано с тем, что WPF не связан напрямую с пикселем-отображением - он использует «независимые от устройства пиксели» (DIP), которые можно масштабировать для любого устройства, на котором оно отображается. Это дает WPF возможность масштабирования и перевода всего, что он отображает очень легко.

Что касается System.Windows.Int32Rect, единственное место, которое я вижу в нем, используется внутри API для захвата и обрезания пикселей. Это имеет смысл - при выполнении захвата экрана вы хотите получить точно пиксели, которые в настоящее время отображаются на устройстве.

+0

Это имеет смысл. Я надеялся, что они также сделают простой Int32Point для аналогичных целей. Бывают случаи, когда целые числа - все, что вам нужно - и когда вы имеете дело только с целыми числами, значения с плавающей запятой фактически нанесут ущерб вашей точности, поскольку они никогда не являются точным числом, которое вы хотите. – Giffyguy

+1

Я должен добавить, что это для кодовых функций, а не для отображения вещей. Я не работаю в области, где DIP-сервер означает что-то для меня, поэтому все библиотеки пользовательского интерфейса с плавающей точкой не очень подходят для того, что я пытаюсь создать исключительно в памяти. – Giffyguy