Мне нужно нарисовать линию длиной в один дюйм на любом устройстве с ссылкой на Graphics. Мне нужно, чтобы он был длиной в дюйм, независимо от того, для чего установлен Transform. Предположим, что масштабный коэффициент преобразования задается выражением scale как в горизонтальном, так и в вертикальном направлениях.
Некоторый код С++/CLI:
g->DrawLine(Pens::Black, 50.0f, 50.0f, 50.0f + oneInchEquivalent / scale, 50.0f);
Теперь это было совсем не сложно! Теперь нам нужно всего лишь рассчитать oneInchEquivalent.
g->DpiX дает мне расстояние от того, что выглядит как один дюйм на экране, но не на принтере. Похоже, что на принтерах линия 100 единиц с g->PageUnit, установленная в GraphicsUnit:: Display, даст мне линию длиной в один дюйм. Но мне действительно нужно, чтобы это работало независимо от настройки PageUnit. Фактически, изменение PageUnit изменит ширину пера!!
Изменить: Я предварительно принял единственный ответ здесь, поскольку он довольно близок к тому, что я ищу.