GDI +: Как нарисовать линию длиной в один дюйм на любом устройстве?
Мне нужно нарисовать линию длиной один дюйм на любом устройстве, учитываяGraphics
ссылка на это. Мне нужно, чтобы он был длиной в дюйм, независимо от того, чтоTransform
установлен в. Позволять'Предположим, что масштабный коэффициент преобразования определяется какscale
в горизонтальном и вертикальном направлениях.
Некоторый код C ++ / 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
изменит ширину пера !!
Редактировать: Я предварительно принял здесь единственный ответ, так какдовольно близко к тому, что я ищу.