일반적으로 선그리기를 할때
Canvas.MoveTo(0, 100);
Canvas.LineTo(1000, 100);
으로 하면 필셀단위로 그려집니다.
이것을 mm단위로 바꾸어 그릴려면
SetMapMode(Canvas.Handle, MM_LOMETRIC);
Canvas.MoveTo(0, -100);
Canvas.LineTo(1000, -100);
으로 하는 것으로 알고 있는데 win98에서 실행한것과 win2000에서 실행한것의 결과가 다르게 나옵니다.
그래서 몇가지 테스트를 해 보았는데
procedure TForm1.Button1Click(Sender: TObject);
var
I, J, K, L: Integer;
begin
I := GetDeviceCaps(Canvas.Handle, HORZRES);
J := GetDeviceCaps(Canvas.Handle, VERTRES);
K := GetDeviceCaps(Canvas.Handle, HORZSIZE);
L := GetDeviceCaps(Canvas.Handle, VERTSIZE);
ShowMessage(Format('%d,%d,%d,%d',[I, J, K, L]));
end;
이 코드를 실행해 보면
win98에서는 1024x768(픽셀), 270x203(mm)로 나옵니다.
즉 1024픽셀이 mm로 환산하면 270mm가 된다는 것 같습니다.
그런데 win2000에서는 1024x768(픽셀), 320x240(mm)로 나옵니다.
왜 이런 결과가 나오는지 알고 계신분은 답변 부탁드립니다.
제가 잘못 이해하고 있는 부분은 어떤것인지, 어떻게 해야할지 감도 못잡고 있습니다.
감사합니다.