Сантиметр в пиксель - PullRequest
       2

Сантиметр в пиксель

8 голосов
/ 22 января 2011

Как мне преобразовать сантиметр в пиксель в c #?

Ответы [ 6 ]

19 голосов
/ 22 января 2011
int CentimeterToPixel(double Centimeter)
{
    double pixel = -1;
    using (Graphics g = this.CreateGraphics())
    {
        pixel = Centimeter * g.DpiY / 2.54d;
    }
    return (int)pixel;
}
6 голосов
/ 22 января 2011

Вы можете использовать свойства DpiX и DpiY объекта Graphics, в котором вы находитесь рисунок (который вы должны иметь, так как преобразование не имеет смысла в отсутствие некоторый графический контекст.)

В DpiX и DpiY , "D" означает «точки» или пиксели, в то время как «я» означает «дюймы». Итак, это будет конвертировать пиксели в дюймы. Тогда все, что вам нужно сделать, это преобразовать дюймы в сантиметры => (х * 2,54)

Также, если вы хотите быть более "точным", взгляните на следующее: HOWTO: Как заставить приложение отображать реальные единицы измерения

2 голосов
/ 22 января 2011

Пиксель и сантиметр - это две разные единицы измерения, которые рассчитываются в соответствии с настройками DPI пользователя. Для правильного преобразования вам нужно знать DPI экрана пользователя.

Если у вас дисплей с диагональю 12,8х1024, отображающий 12,8 см, то у вас 100 пикселей на сантиметр.

Однако вы можете попробовать использовать Graphics.TransformPoints для преобразования из пикселя в см или наоборот.

1 голос
/ 22 января 2011

Длина в CM = LenghtPixels * 2.54 / DPI

Я думаю, вы можете получить DPI каждого дисплея, используя WMI, значение, которое вы ищете, находится в классе Win32_DisplayConfiguration под полем LogPixe.1003 *

Проверьте эту ссылку об использовании WMI для извлечения данных: LINK

1 голос
/ 22 января 2011

В WPF один сантиметр составляет около 37,8 независимых от устройства пикселей.

1 голос
/ 22 января 2011

Как я уже сказал в своем комментарии, вам придется дать больше информации.(Это приложение для Windows Forms? ASP.Net?)

Фундаментальный подход:

  • Выясните DPI соответствующего устройства вывода.(Часто 96 [96 точек на дюйм], но вы не можете этого допустить.) Этот поток может помочь вам сделать это, если это приложение Windows Forms.Кроме того, класс Graphics имеет члены DpiX и DpiY, так что вы можете использовать их.
  • Преобразование DPI в DPC [точек на сантиметр] (DPC= DPI / 2.54).
  • Умножьте количество сантиметров на значение DPC.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...