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

abajo

Impresión gráfica difícil Encontrar ramas similares


GarryFV   (2001-11-05 12:35) [0]

Este problema ya está empezando a llegar. Y resultó que no era tan fácil de entender como parecía :).

Debe imprimir en la impresora una gran cantidad de objetos gráficos complejos (hasta varias decenas de miles). Diré de inmediato que puedo usar Printer.Canvas, pero cuando lo imprimo, este procedimiento toma decenas de minutos de nuevo.
Conclusión: debe crear un mapa de bits y enviarlo a la impresora, pero aquí surgen otros problemas:
La resolución de la impresora es 600 dpi, en píxeles es aproximadamente 7000 x 4000
color rgb - bytes 4,
tamaño bitmap -> 7000 x 4000 x 4 = 112000000 = 107 M

Además, las funciones BitBlt y StretchBlt con la impresora funcionan de manera bastante misteriosa (los que no saben tendrán que explicar un tiempo largo y tedioso, y los que saben lo entenderán).

Y que hacer

¿Puedes decirme dónde leer? Porque incluso en MSDN todo se describe solo al nivel de los objetos GDI estándar, y aquí
más bien, se necesita algún tipo de tecnología para imprimir este tipo de gráficos.

Gracias de antemano.



Dimka Maslov   (2001-11-05 13:51) [1]

El principio subyacente del programa para Windows: salida de datos solo mediante procedimientos estándar proporcionados por el sistema operativo, por lo que debe esperar decenas de minutos si desea procesar grandes cantidades de información.



GarryFV   (2001-11-05 16:28) [2]

Respuesta incorrecta :).
En la pantalla DC, todo este volumen se muestra en un par de segundos. Funciones estándar de GDI. Pero en la impresora de CC de medio día, aproximadamente hablando, pero si el volumen es un poco demasiado grande, entonces la impresora y el cerebro no son suficientes.

El truco es que para imprimir no es necesario formar un mapa de bits a todo color en 100M (ver pregunta). Ya estoy en silencio si la impresora no está coloreada.
Entonces, ¿hacer la transformación de colores a 256, por ejemplo?
Tampoco es lo mismo. Además, el tamaño disminuye solo 4 veces, es decir, Xnumx lo hará.
Una vez más digo: se necesita algún tipo de tecnología. Puede, por ejemplo, crear un mapa de bits en 4 veces más pequeño y luego, de forma estándar, estirarlo hacia la impresora. Pero parece una especie de perversión.

Funciona el mismo Photoshop de alguna manera. Y muestra imágenes a gran escala con bastante rapidez.

¿Así que nadie sabe dónde puedes leerlo?

BTW: BitmapHandle: = CreateCompatibleBitmap (DC, 4960,7014); - No funciona, devuelve 0.
Lo mejor que logró crear - 3562 X 5616.



Anatoly Podgoretsky   (2001-11-05 17:34) [3]

Y si aún lo divide en 8, entonces obtendrá todo 3 mb
Cada píxel de la impresora tiene solo dos estados 0 o 1
Pero si quieres hacer la conversión a monocromo es otra pregunta.
No sé, ¿tal vez deberías sufrir con metarchivos?



GarryFV   (2001-11-06 12:28) [4]

No dije que la impresora es siempre en blanco y negro. Solo para una optimización completa puedes tener esto en cuenta.
Bueno, la pregunta, como yo la veo, es realmente seria.
Nadie sabe una maldita cosa;).



Raptor   (2001-11-06 22:28) [5]

Hi!

Leí algo como esto. Parece que Darahvelidze en el libro "Delphi 4" tiene un ejemplo de trabajar con imágenes muy grandes. Allí se utilizaron los archivos mapeados en la memoria para esto.

Raptor



Иван Шихалев   (2001-11-06 23:31) [6]

En mi humilde opinión, para los metarchivos de la impresora son mucho mejores mapas de bits.



Páginas: 1 rama entera

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

arriba





Memoria: 0.56 MB
Tiempo: 0.024 c
1-22072
Garik
2001-12-19 11:08
2002.01.08
Cómo crear una instancia secundaria de TFrame dinámicamente


4-22477
Arte
2001-10-31 12:17
2002.01.08
¿Cómo ver todos los procesos ejecutando todos los programas?


7-22448
Stanislas
2001-09-11 15:24
2002.01.08
Datos en disquete


1-22148
Delphimun
2001-12-20 12:10
2002.01.08
¿Cómo enviar un mensaje al sistema que una tecla es presionada?


14-22355
congelación
2001-11-06 12:39
2002.01.08
Traducción





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 French
gallego georgiano Alemán Griego criollo haitiano Hebreo hindi Húngaro islandés Indonesian irlandés Italiano 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