Conversão de mm para pixels

Delphi

27/11/2006

estou tentando posicionar um label num quick report. sei que o label tem que ficar 135mm distante da borda esquerda, ou seja, left:=135mm. o problema é que tenho que passar esse valor em pixel. como converter?

eu sei, eu sei. ´noobei´ agora...


Djorius

Djorius

Curtidas 0

Respostas

Mahdak

Mahdak

27/11/2006

estou tentando posicionar um label num quick report. sei que o label tem que ficar 135mm distante da borda esquerda, ou seja, left:=135mm. o problema é que tenho que passar esse valor em pixel. como converter? eu sei, eu sei. ´noobei´ agora...



djorius, ja pesquisei sobre isso, fiz cursos de autocad Map, e nem o professor conseguiu me dar uma resposta coerente para essa duvida.

Cheguei ao seguinte raciocinio, [b:e119ad183b]que nao sei se está correto[/b:e119ad183b]:

1. pode-se converter, mas se por exemplo logo após a conversao, alguem mecher nas configurações do monitor, ja era, pois o pixel se estica, sendo assim, nao possui um tamanho padrão.

2. voce teria que desenvolver uma rotina para calibrar o sistema, como por exemplo usar uma escala grafica, onde voce sabe o quanto equivale ela em alguma unidade de medida (principio do georeferenciamento), para relatórios nao sei como isso poderia ser feito mas para imagens eu usaria(escanearia) uma escala grafica de uma carta (mapa), e inseria ela no sistema.

3. depois disso feito basta aplicar uma regra de 3, parecida com isso:

3.1 conta quantos pixels existe na escala
3.2 se a escala equivale a X metros (por exemplo), e possui tantos pixels; um pixel equivale a quantos metros?


GOSTEI 0
M@gnun

M@gnun

27/11/2006

à realmente necessidade de usar pixels?

quando vc for usar mm passe na propriedade size:

Size.Left := 135;

:D
espero ter ajudado.


GOSTEI 0
Thiago Vidal

Thiago Vidal

27/11/2006

bom, qdo eu preciso deste tipo de informação, o jeito normalmente é recorrer às APIs do Windows.

normalmente eu uso a API GetDeviceCaps, que retorna quantos pixels por polegada um determinado canvas pode imprimir. vc pode tentar pegar esta informação do canvas do seu form, ou mesmo da impressora.

function MMToPixels(Canvas: TCanvas; MM: Integer): Integer;
begin
  Result := GetDeviceCaps(Canvas.Handle) * MM / 25.4;
end;



GOSTEI 0
POSTAR