Если Вам необходимо преобразовать значения пикселей в миллиметры (дюймы, сантиметры и т.д.), используйте код, представленный ниже.
Код использует функцию API GetDeviceCaps для получения единиц измерений, которые Вам нужны.
procedure PixelsToMM(
Canvas: TCanvas;
var x, y: single) ;
var
h: HDC;
hResolution,vResolution,
hSize,vSize: integer;
begin
H:= Canvas.Handle;
{ширина в пикселах}
hResolution := GetDeviceCaps(H,HORZRES) ;
{высота в пикселах}
vResolution := GetDeviceCaps(H,VERTRES) ;
{ширина в миллиметрах}
hSize := GetDeviceCaps(H,HORZSIZE) ;
{высота в миллиметрах}
vSize := GetDeviceCaps(H,VERTSIZE) ;
x := hResolution/hSize;
y := vResolution/vSize;
end;
Теперь, давайте преобразуем, например, экран монитора (1280 х 1024) пикселей в миллиметры. Для этого нужно сделать следующее:
- Сначала вызываем функцию PixelsPerMM, чтобы получить значение пиксель на миллиметр для устройства (экран, принтер ...)
- Затем преобразуем определенное количество пикселей в миллиметры, в зависимости от ориентации (горизонтальная или вертикальная).
procedure TForm1.Button1Click(Sender: TObject);
var
CX, CY : single;
Xmm, Ymm : integer;
begin
PixelsPerMM(Canvas, CX, CY) ;
Xmm := Trunc(1280/CX) ;
Ymm := Trunc(1024/CY) ;
Label1.Caption:= IntToStr(Xmm);
Label2.Caption:= IntToStr(Ymm);
end;
Также преобразовать пиксели в миллиметры и наоборот, Вы можете на сайте http://www.unitconversion.org/typography/pixels-x-to-millimeters-conversion.html
|