Imprimir imagem .jpg com printer.canvas

Delphi

27/03/2008

ola pessoal,

estou tentando imprimir uma imagem usando printer em um impressora termica e ela imprime imagem pq pelo quickreport dá certo...ja tentei o seguinte:

var
img:TImage;
path:string;
begin

   path:=ExtractFilePath(application.ExeName);
   img:=TImage.Create(self);
   img.Picture.LoadFromFile(path+´tc.jpg´);
     Printer.BeginDoc;
     with Printer.Canvas do
     begin
      StretchDraw(Rect(0,0,0,0),img.Picture.Graphic);
     end;
     Printer.EndDoc;

end;


mas nao deu certo, ele envia para a impressora mas a folha sai em branco....algum tem uma luz...obrigado.


Tap_pedroso

Tap_pedroso

Curtidas 0

Respostas

Rodc

Rodc

27/03/2008

Tente fazer um Lock no canvas, depois de desenhar faça um Unlock.


GOSTEI 0
Edilcimar

Edilcimar

27/03/2008

você tem que especificar a posição do trect, você está dizendo que ele tem tamanho zero StretchDraw(Rect(0,0,0,0),img.Picture.Graphic), os números para impressão são os seguintes: esquerda, topo, direita e inferior


GOSTEI 0
Tap_pedroso

Tap_pedroso

27/03/2008

o tamanho que eu coloco no RECT é em pixels? pq eu coloquei

StretchDraw(Rect(10,10,100,100),img.Picture.Graphic);

e sai um tamanha ...depois
StretchDraw(Rect(10,10,400,400),img.Picture.Graphic); saiu outro tamnho

e depois StretchDraw(Rect(10,10,800,800),img.Picture.Graphic);

maior ainda...no ultimo saiu maior q o tamanho normal da imagem...como funciona esse rect?


GOSTEI 0
Rodc

Rodc

27/03/2008

Se você quer o tamanho real, utilize a função Canvas.Draw(). Esta não precisa passar o tamanho da imagem.


GOSTEI 0
Edilcimar

Edilcimar

27/03/2008

o valor da cada número varia de acordo com a resolução da impressora, se a resolução estiver 100x100 significa 100 pontos por polegada(pixels), então se voce colocar o trect(0,0,100,100) significa que será colocado na posição colunaesquerda=0, linhasuperior=0, colundireita=100, linhainferior=100, mas como 100 é igual a 1 polegada, você terá um quadrado de 1 polegada, porém se a resolução da impressora estiver 200x200, significa que com as mesmas medidas tudo será impresso em apenas 1/2 polegada


GOSTEI 0
Tap_pedroso

Tap_pedroso

27/03/2008

blz, consegui...muito obrigado turma. abraços.


GOSTEI 0
POSTAR