Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Principal";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

abajo

Problema con el tamaño de la imagen al imprimir. Encontrar ramas similares


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

No puedo imprimir la imagen con las dimensiones exactas. Todavía se imprime incorrectamente.
Yo hago esto Encuentra los tamaños de Bitmapa en pulgadas:
sx, sy: real; ABitmap: = Image1.Picture.Bitmap; sx: = ABitmap.Width / GetDeviceCaps (image1.canvas.handle, LOGPIXELSX); sy: = ABitmap.Height / GetDeviceCaps (image1.canvas.handle, LOGPIXELSY);

Ahora encuentro las dimensiones en píxeles en la impresora para imprimir:
relwidth: = trunc (GetDeviceCaps (Printer.canvas.handle, LOGPIXELSX) * sx); relheight: = trunc (GetDeviceCaps (Printer.canvas.handle, LOGPIXELSY) * sy);

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

DrawImage:
procedimiento DrawImage (Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap); Encabezado var, Bits: Puntero; HeaderSize: Cardinal; BitsSize: Cardinal; comenzar GetDIBSizes (ABitmap.Handle, HeaderSize, BitsSize); Encabezado: = AllocMem (HeaderSize); Bits: = AllocMem (BitsSize); prueba 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 (Header ^) finalmente FreeMem (Header, HeaderSize); FreeMem (Bits, BitsSize); fin fin

Todo esto se imprime con tamaños incorrectos. ¿Dónde está el error?

Sinceramente, Oleg.



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

// Imprimir bitmap tamaño x x y milimetros procedimiento PrintBM (B: TBitmap; x_mm, y_mm: double); var resx, resy: doble; comenzar resx: = Printer.PageWidth / GetDeviceCaps (Printer.Handle, LOGPIXELSX); resy: = Printer.PageHeight / GetDeviceCaps (Printer.Handle, LOGPIXELSY); Printer.Canvas.StretchDraw (Rect (0,0, round (x_mm * resx), round (y_mm * resy)), B); fin // Imprimir mapa de bits x x pulgada pulgada procedimiento PrintBMInch (B: TBitmap; x_inch, y_inch: double); comenzar PrintBM (B, x_inch * 2.54, y_inch * 2.54); fin



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

procedimiento PrintSameSize (B: TBitmap); var scalex, scaley: doble; comenzar 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, round (B.Width * scalex), round (B.Height * scaley)), B); fin



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);



Páginas: 1 rama entera

Foro: "Principal";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

arriba









Memoria: 0.56 MB
Tiempo: 0.024 c
14-22336
Ivan Shikhalev
2001-11-02 23:31
2002.01.08
Banana dorada


7-22438
Sasha
2001-08-17 16:14
2002.01.08
Modem de voz


1-22265
Ser_Kham1
2001-12-17 16:10
2002.01.08
Cuadro de lista


3-21915
KAA
2001-12-04 10:28
2002.01.08
Restablecer MSSQL2000 variables


6-22284
Delirio
2001-10-08 16:29
2002.01.08
Cómo enviar un mensaje inmediatamente a todas las direcciones IP





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish Francés
gallego georgiano Alemán Griego criollo haitiano hebreo hindi Húngaro islandés Indonesian irlandés Italiana Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español