Хотя в теории 1 единица в WPF составляет 1/96 дюйма, на практике это часто не так.
Обычно это происходит при печати.Но это редко правда на экране.Причина этого в том, что Windows почти всегда знает истинное разрешение принтера, но почти никогда не знает истинное разрешение экрана.
Например, у меня есть три экрана, подключенные к моему компьютеру.Windows считает, что все они имеют разрешение 96 пикселей на дюйм.На самом деле они этого не делают.Два из них имеют разрешение 101 пиксель на дюйм, а один - 94 пикселя на дюйм.(Почему? Потому что у Windows нет способа выработать истинное разрешение для себя, и я не сказал этого. Фантастика, что все они имеют одинаковый размер пикселя, близка к истине и оказывается удобной фикцией.)
Итак, когда я создаю, скажем, Rectangle в WPF с Width и Height, равными 96, размер Rectangle фактически зависит от того, на каком экране он появляется.Windows считает, что все 3 экрана имеют разрешение 96 пикселей на дюйм, поэтому прямоугольник будет иметь высоту и ширину 96 пикселей независимо от того, на каком экране он появляется.Это сделает его 0,95 дюйма высотой на двух экранах и 1,02 дюйма высотой на третьем.
Таким образом, на практике это означает, что единицы измерения в WPF на моем компьютере здесь составляют 1/100 отдюйм, или 1/94 дюйма на практике.(То есть на практике размер 1 единицы в WPF точно равен размеру 1 пикселя в моей конкретной установке, независимо от того, насколько велики пиксели.)
Я мог бы это изменить.Я мог бы перенастроить Windows - я мог бы сказать, что это фактическое разрешение всех 3 экранов, и в этом случае номинальный и фактический размеры блоков WPF будут совпадать.Или я мог бы лгать - я мог бы утверждать, что у меня есть экраны с разрешением 200 пикселей на дюйм, и в этом случае все было бы массивно ...
Основная проблема здесь заключается в том, что у компьютера нет стандартного способа обнаружитьистинный размер физических пикселей на экране, и очень немногие люди пытаются настроить его вручную.(И на самом деле вы можете вызвать проблемы, настроив его «правильно», потому что многие программы не ведут себя правильно, когда вы это делаете.) Таким образом, большинство компьютеров Windows не сообщают WPF правильно размеры физического пикселя - они могут »т, потому что они не знают.
Следовательно, нет надежного ответа на вопрос - 1 единица в WPF может быть почти чем угодно на экране.(На практике в большинстве случаев он составляет 1 пиксель, просто потому, что если вы больше ничего не говорите Windows, по умолчанию предполагается, что ваши экраны имеют пиксели высотой 1/96 дюйма, чтотакой же, как 1 блок WPF. И для большинства экранов настольных компьютеров это вполне вероятно, что это правильное предположение. Но это не универсально. В системах, настроенных, например, на так называемые «большие шрифты», вы найдетедругое номинальное разрешение экрана и 1 единица WPF будут соответствовать чуть более 1 физического пикселя - на самом деле около 1,2.)
С принтерами это все гораздо более предсказуемо.Принтеры всегда могут правильно сообщать о своих решениях.Поэтому, если вы печатаете что-то высотой 96 единиц WPF, вы можете быть уверены, что оно будет высотой 1 дюйм.