La impresión en Landscape solo funciona con las medidas originales de Paint. Hay que hacer una traslación de medidas cada vez que se necesite imprimir algo.
Ejemplo:
Public Sub Imprimir()
pPrinter = New Printer As "FPrinter"
pPrinter.Print
End
Public Sub FPrinter_Begin()
pPrinter.Orientation = 1 'landscape
Paint.Scale((Paint.Width) / pPrinter.PaperWidth, (Paint.Height) / pPrinter.PaperHeight) 'Cooordenadas en milímetros
pPrinter.Count=1 'Imprimir 1 página
End
Public Sub FPrinter_Draw()
Paint.DrawText("Este texto se imprime a 10 mm del borde derecho y 10 mm del borde superior",10,10)
End
pPrinter = New Printer As "FPrinter"
pPrinter.Print
End
Public Sub FPrinter_Begin()
pPrinter.Orientation = 1 'landscape
Paint.Scale((Paint.Width) / pPrinter.PaperWidth, (Paint.Height) / pPrinter.PaperHeight) 'Cooordenadas en milímetros
pPrinter.Count=1 'Imprimir 1 página
End
Public Sub FPrinter_Draw()
Paint.DrawText("Este texto se imprime a 10 mm del borde derecho y 10 mm del borde superior",10,10)
End
Este ejemplo NO FUNCIONA si mantenemos pPrinter.Orientation =1 (Landscape) pero funciona normalmente si pPrinter.Orientation=0 (Portrait)
Esto SI FUNCIONA
Public Sub Imprimir()
pPrinter = New Printer As "FPrinter"
pPrinter.Print
End
Public Sub FPrinter_Begin()
pPrinter.Orientation = 1 'landscape
pPrinter.Count=1 'Imprimir 1 página
End
Public Sub FPrinter_Draw()
Dim fhEscala as Float, fwEscala as Float
fhEscala = (Paint.Height / pPrinter.PaperHeight)
fwEscala = (Paint.Width / pPrinter.PaperWidth)
Paint.DrawText("Este texto se imprime a 10 mm del borde derecho y 10 mm del borde superior",10 * fwEscala ,10 * fhEscala)
End
El segundo bug que mencionaba es que el diálogo de configuración de impresoras que se muestra con el método Configure de la clase Printer no reconoce el cambio de formatos distintos de A4, es decir, se puede selecionar A3 pero se comporta como si continuase seleccionado A4. Para esto no he encontrado solución todavía.
Sebas