Pregunta: | 29375 - PRINTER:FONTTRANSPARENT |
Autor: | Agustín Dávila |
Mi problema es el siguiente. Utilizo el objeto Printer para imprimir e incluyo un mapa de bits sobre el cual tengo que escribir encima. El problema surge cuando imprimo un texto sobre el mapa de bits, y el texto me aparece con fondo blanco y no con fondo transparente. Me comentaron que para este problema debía poner la propiedad "Fonttransparent=True" para el objeto Printer, pero ni con esas. Muchas gracias ante todo. |
Respuesta: | Pedro Perea |
Fonttrasparente da problemas en algunos sistemas win 98, win95 ... y con algunos controladores de impresión por lo que aunque pongamos a true la propiedad cuando imprimamos el resultado es como si la tuvieramos a false. Si usas la siguiente llamada a la API de windows obtendrás el resultado deseado.
Agregua las declaracion siguiente a la sección General del formulario: Private Declare Function SetBkMode Lib "gdi32" _ (ByVal hdc As Long, ByVal nBkMode As Long) As Long Private iBKMode as Long Private Const TRANSPARENT = 1 Private Const OPAQUE = 2 Corrije el código en el evento Click del formulario: Private Sub Form_Click() Printer.Print "" Printer.Line (0,0)-(10000, 2000), &HC0C0C0, BF Printer.CurrentX = 0 Printer.CurrentY = 0 Printer.FontTransparent = True 'Aqui consigues cabiar a transparente iBKMode = SetBKMode(Printer.Hdc, TRANSPARENT) Printer.Print "Printer.FontTransparent = " & Printer.FontTransparent Printer.FontTransparent = False 'Aquí cambias a Opaco iBKMode = SetBKMode(Printer.Hdc, OPAQUE) Printer.Print "Printer.FontTransparent = " & Printer.FontTransparent Printer.EndDoc End Sub Haz clic el en el formulario. El texto se debería imprimir ahora como se espera |