Мне нужно нарисовать линию длиной в один дюйм на любом устройстве с ссылкой на 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
изменит ширину пера!!
Изменить: Я предварительно принял единственный ответ здесь, поскольку он довольно близок к тому, что я ищу.