Проверка наличия двух дат имеют одинаковую информацию о дате

Приветствую,

Как я могу проверить, имеют ли два разных объекта даты одинаковую информацию о дате (имея одинаковый день, месяц , год ...)? Я пробовал "==", "===" и .equals, но, похоже, ни один из них не работает. у меня вопрос , как я могу получить точное количество отступов (слева и справа), добавленных DrawText к тексту для данного контекста устройства, строки, шрифта и т. д.?

Я Мы углубились в .NET 4 с помощью .NET Reflector и обнаружили, что TextRenderer вычисляет «отступы выступа», составляющие 1/6 высоты шрифта, а затем умножает это значение для вычисления левого и правого полей с использованием следующих коэффициентов:

  • left 1.0, справа 1,5 для TextFormatFlags.GlyphOverhangPadding ,
  • слева 2,0, справа 2,5 для TextFormatFlags.LeftAndRightPadding .

Полученные значения округляются в большую сторону и передаются в Draw 1177185] или DrawTextExW собственные функции API. Воссоздать этот процесс сложно, так как высота шрифта взята не из Системы . Drawing.Font , но из System.Windows.Forms.Internal.WindowsFont , и эти классы возвращают разные значения для одного и того же шрифта. При этом задействовано множество других внутренних классов BCL из пространства имен System.Windows.Forms.Internal . Декомпилировать их все и повторно использовать их код в моем приложении не вариант, потому что это будет серьезной зависимостью от реализации .NET. Вот почему мне нужно знать, есть ли в WinForms какой-нибудь общедоступный API или, по крайней мере, какие функции Windows я могу использовать для получения значений левого и правого полей.


Примечание: Я пытался TextRenderer .MeasureText с заполнением и без него и сравните результаты, но это дало мне только сумму левого и правого полей, и они мне нужны отдельно.


Примечание 2: На случай, если вам интересно, зачем мне это: Я хочу нарисовать одну строку с несколькими шрифтами / цветами. Это включает в себя вызов DrawText один раз для каждой равномерно отформатированной подстроки с опцией NoPadding (чтобы текст не растекался), но я также хочу добавить вручную обычный GlyphOverhangPadding в самом начале и самом конце всего мультиформатного текста.

29
задан Jacek Mokrzycki 13 December 2010 в 11:26
поделиться