2015-12-01 2 views
1

В настоящее время я разрабатываю небольшой предварительный просмотр принтера, но у меня есть некоторые проблемы с преобразованием точек на мм/т/д в пиксели на экране.Преобразование dpi/точек в пиксель дает неправильный результат

Например я есть Label который имеет координаций: сверху = 5 точек осталось = 20 точек

Принтер имеет разрешение 8 точек на мм/203 точек на дюйм.

В моем простом приложении wpf у меня есть холст, где я хочу разместить ярлык на том месте, где он будет напечатан. Поэтому мне нужно преобразовать значения 20 и 5 относительно моего разрешения на экране. Но результат в пикселях неверен. Это мои расчеты:

// start values 
double top = 5; 
double left = 20; 

// let's try to calculate the mm. We use 8, because we have 8mm per dot 
double mmtop = top/8.0; 
double mmleft = left/8.0; 

// let's turn mm to cm 
double cmtop = mmtop * 10.0; 
double cmleft = mmleft * 10.0; 

// Lets calulate the pixels on the base of a 72dpi monitor 
double dpitop = cmtop/25.4 * 72.0; // = 318.89 
double dpileft = cmleft/25.4 * 72.0; // = 17.71 

Так я попытался вычислить положение на основе пикселя. Что я делаю не так?

Возможно, я сделал очень легкую ошибку, спасибо!

+1

Там не 25.4 см дюйма. Есть 2,54 см в дюйме, так что, может быть, ваши переменные 'dpitop' и' dpileft' имеют неправильные значения? – Sheridan

ответ

1

Для перехода от мм до см нужно разделить на 10 вместо умножения на 10.

+0

О, это очень неловко. Большое спасибо. Я буду проверять все. Это так, у меня нет слов ... :) – BendEg

+1

@Sheridan также правильна в отношении преобразования точек на дюйм ... вам нужно будет изменить оба, чтобы заставить его работать. Удачи! – PeteB

+0

Да, большое спасибо. Теперь это работает. Извините за то, что вы беспокоили вас, с этими ошибками. – BendEg

Смежные вопросы