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