Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Principal";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

Para baixo

Problema com o tamanho da imagem ao imprimir Encontre agências semelhantes


Oleg Gashev   (2001-12-15 11:14) [0]

É impossível imprimir uma imagem com dimensões exatas. Ainda não imprime corretamente.
Eu faço isso. Encontre dimensões do Bitmapa em polegadas:
sx, sy: real; ABitmap: = Image1.Picture.Bitmap; sx: = ABitmap.Width / GetDeviceCaps (image1.canvas.handle, LOGPIXELSX); sy: = ABitmap.Height / GetDeviceCaps (image1.canvas.handle, LOGPIXELSY);

Agora eu acho as dimensões em pixels na impressora para impressão:
relwidth: = trunc (GetDeviceCaps (Printer.canvas.handle, LOGPIXELSX) * sx); relheight: = trunc (GetDeviceCaps (Printer.canvas.handle, LOGPIXELSY) * sy);

Impressão:
Printer.BeginDoc; DrawImage (Printer.Canvas, Rect (0, 0, relWidth, relHeight), ABitmap); Printer.EndDoc;

DrawImage:
procedure DrawImage (Tela: TCanvas; DestRect: TRect; ABitmap: TBitmap); Cabeçalho var, Bits: Ponteiro; HeaderSize: Cardeal; BitsSize: Cardinal; começar GetDIBSizes (ABitmap.Handle, HeaderSize, BitsSize); Cabeçalho: = AllocMem (HeaderSize); Bits: = AllocMem (BitsSize); tente GetDIB (ABitmap.Handle, ABitmap.Palette, Header ^, Bits ^); StretchDIBits (Canvas.Handle, DestRect.Left, DestRect.Top, DestRect.Right, DestRect.Bottom, 0, 0, ABitmap.Width, ABitmap.Height, bits, TBitmapInfo (cabeçalho ^), DIB_RGB_COLORS, SRCC; finalmente FreeMem (cabeçalho, cabeçalho); FreeMem (Bits, BitsSize); fim; fim;

Tudo isso imprime com o tamanho errado. Onde está o erro?

Atenciosamente, Oleg.



MrBeer   (2001-12-16 21:27) [1]

// Imprime bitmap X x Y milímetros de tamanho procedimento PrintBM (B: TBitmap; x_mm, y_mm: double); var resx, resy: double; começar resx: = Printer.PageWidth / GetDeviceCaps (Printer.Handle, LOGPIXELSX); resy: = Printer.PageHeight / GetDeviceCaps (Printer.Handle, LOGPIXELSY); Printer.Canvas.StretchDraw (Rect (0,0, redondo (x_mm * resx), redondo (y_mm * resy)), B); fim; // Imprimir bitmap X x tamanho Y em polegadas procedimento PrintBMInch (B: TBitmap; x_inch, y_inch: double); começar PrintBM (B, x_inch * 2.54, y_inch * 2.54); fim;



MrBeer   (2001-12-16 21:40) [2]

procedimento PrintSameSize (B: TBitmap); var scalex, scaley: double; começar scalex: = GetDeviceCaps (Printer.Handle, LOGPIXELSX) / GetDeviceCaps (B.Canvas.Handle, LOGPIXELSX); scaley: = GetDeviceCaps (Printer.Handle, LOGPIXELSY) / GetDeviceCaps (B.Canvas.Handle, LOGPIXELSY); Printer.Canvas.StretchDraw (Rect (0,0, redondo (B.Width * scalex), redondo (B.Hight * scaley)), B); fim;



MrBeer   (2001-12-16 21:48) [3]

A esli tak napisatj?
// ....
scalex: = GetDeviceCaps (Printer.Handle, LOGPIXELSX) / GetDeviceCaps (GetDC (0), LOGPIXELSX); scaley: = GetDeviceCaps (Printer.Handle, LOGPIXELSY) / GetDeviceCaps (GetDC (0), LOGPIXELSY);



Страницы: 1 filial inteira

Fórum: "Principal";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

em cima





Memória: 0.55 MB
Hora: 0.022 c
1-22022
vencedor
2001-12-18 08:05
2002.01.08
Precisa de um rótulo para exibir fórmulas


1-22002
BFG
2001-12-16 16:24
2002.01.08
Gráficos


1-22027
vencedor
2001-12-18 09:49
2002.01.08
precisa de um componente para exibir páginas HTML


14-22372
froz
2001-11-08 16:25
2002.01.08
URGENTEMENTE!


1-22011
Ksergey
2001-12-16 14:26
2002.01.08
Como capturar a tecla TAB?





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese Romeno Russa sérvio Slovak esloveno Espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol