Fórum Simular Caracteres Expandidos/Condensados #178683

31/08/2003

0

Olá Pessoal,

Preciso alterar a largura dos caracteres de uma fonte qualquer sem alterar sua altura, ou seja, preciso simular caracteres expandidos e condensados de impressoras matriciais.
Nas impressoras matriciais podemos usar comandos para expandir ou condensar a largura dos caracteres: 5 cpi, 10 cpi, 17 cpi, etc... sem que isso altere a altura dos mesmos, preciso criar uma função para simular tal condição.
Tentei criar um objeto TBitMap no tamanho exato, (largura e altura), da série de caracteres inserir o texto com Canvas e depois copiá-lo com StretchDraw conforme segue:

Var
bitm: TBitMap;
txt: String;
pTxt, xx: Integer;

Begin
txt:=´Teste Ampliação de Caracteres´;
xx:=6;
bitm.Create;
bitm.Height:=Printer.Canvas.TextHeight(txt);
bitm.Width:=Printer.Canvas.TextWidth(txt);
bitm.Canvas.Font:=Printer.Canvas.Font;
bitm.Canvas.Font.Height:=bitm.Height;
bitm.Canvas.TextOut(0,0,txt);
pTxt := (bitm.Width * 10) div xx;
box1:=Rect(0,0,pTxt-1,bitm.Height-1);
Printer.Canvas.StretchDraw(box1,bitm);
End;


O funcionamento foi perfeito, (xx representa a largura dos novos caracteres em cpi), porém o tempo necessário para montar uma página de texto é enorme, alguém teria uma solução de como posso realizar tal tarefa de uma forma mais rápida?

Antecipadamente agradeço a ajuda.


Luiz A.Barreto


Luiz A.barreto

Luiz A.barreto

Responder

Posts

01/09/2003

Nigro

Esse procecdimento não vai dar certo mesmo pois o tempo gasto pelo canvas é porque para a impressora tudo aquilo são gráficos, não sei se ajuda mas tente colocar no seu relatório fontes nativas de impressora, mas creio que nem assim, pois como falei Canvas para a impressora é gráfico.

Nigro


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar