[GDI] Tryb odwzorowania MM_HIMETRIC

0

Witam,
mam pytanie typu why albo strange. Otóż przy zabawie z ( uczeniu się ) windows GDI przy zmianie odwzorowania za pomocą SetMapMode( hDC, MM_HIMETRIC ) niestety nie zgadzają się długości, tj. przy rysowaniu kreski o 10000 jednostek ( 10000 * 0,01 mm = 10cm ) otrzymuję odcinek 7,3 cm. Gdzie te brakujące 2,7 cm? Aczkolwiek przy odcinku długości 20cm brakuje 5,4cm, czyli 2x więcej. Mógłbym sam napisać dodatkowy przelicznik, ale czy nie ma jakiegoś wytłumaczenia? Może coś robię źle? [???]

oto fragment kodu:

int oldMapMode = SetMapMode( hDC, MM_HIMETRIC );

RECT rc;
GetClientRect( hWnd, (LPRECT)&rc);
DPtoLP( hDC, (LPPOINT)&rc, 2 );

MoveToEx( hDC, 2000, rc.top - 2000, NULL);
LineTo( hDC, 12000, rc.top - 2000);

MoveToEx( hDC, 2000, rc.top - 4000, NULL);
LineTo( hDC, 22000, rc.top - 4000);

SetMapMode( hDC, oldMapMode );
0

a jak zmierzyłeś te 7,3 cm?? - tylko nie mów, że linijką na monitorze :p

0

Tak linijką na monitorze : p, a nie powinno tak być, że ma mieć taką długość jak krechy na linijce?

0

nie, różne monitory mają różny rozmiar pixela i nigdy to nie będzie się zgadzać. Jek chcesz mierzyć linijką to jedynie wydruki z drukarki

0

Tak też myślałem że to wina tych pikseli po głębszym zastanowieniu. Dzięki za odpowiedź. Przynajmniej teraz wiem, że nie ma sensu robić własnoręcznie korekty, bo to i tak nic nie da na innych monitorach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1