перевод пикселей в миллиметры

Тема в разделе "WASM.BEGINNERS", создана пользователем Slaven, 15 июн 2007.

  1. Slaven

    Slaven New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2007
    Сообщения:
    3
    Привет всем! Подскажите пожалуйста, как перевести пиксели в миллиметры, т.е. сколько в одном миллиметре пикселов, а то надо прогу написать в которой задавать значения надо в миллиметрах.
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    пиксель - не фиксированная величина
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Будет зависеть от резолюции дисплея. Зато на любом дисплее должна быть одинаковая картина. Берём от Windows сколько пикселей на дюйм:

    Код (Text):
    1. //
    2. // Do it one time somewhere globally.
    3. // Also do it if you detect resolution change
    4. //
    5. HDC hScreenDC = GetDC (NULL);
    6.  
    7. int nPixelsPerXInch = GetDeviceCaps (hScreenDC, LOGPIXELSX);
    8. int nPixelsPerYInch = GetDeviceCaps (hScreenDC, LOGPIXELSY);
    9.  
    10. ReleaseDC (NULL, hScreenDC);
    11.  
    12. double dblPixelsPerXmm = (double) nPixelsPerXInch / 25.4;
    13. double dblPixelsPerYmm = (double) nPixelsPerYInch / 25.4;
    Ну и далее простая математика:

    Код (Text):
    1. __inline int XPixelsToMm (int nPixels)
    2. {
    3.     return (int) (((double) nPixels / dblPixelsPerXmm) + 0.5);
    4. }
    5.  
    6. __inline int YPixelsToMm (int nPixels)
    7. {
    8.     return (int) (((double) nPixels / dblPixelsPerYmm) + 0.5);
    9. }