Hola, tengo un form que posee: Drivelistbox - DirListBox - FileListBox - PictureBox... tengo todas las secuencias para que me visualice una imagen jpg, ahora bien... necesito poder imprimir esa imagen que se encuentra dentro del PictureBox a un tamaño de 27,3 cms por 18,2 cms... me podrías ayudar? desde ya muchas gracias (te aclaro que no se mucho sobre vb así que lo poco que hice fue viendo en la web)
mi codigo es este:
Option Explicit
Dim Ancho As Single
Dim Alto As Single
Dim Porcentaje As Single
'Variable de tipo IpictureDisp para a almacenar la imagen
Dim imagen As IPictureDisp
'************************************************* **********************
'* Este procedimiento carga la imagen en la variable imagen
'* y calcula las dimensiones y el porcentaje del ancho y alto de la imagen
'* que despues mediante el procedimiento CentrarPicture se dibuja _
* con el metodo PaintPicture
'************************************************* **********************
Private Sub Establecer_Imagen(Obj As Object, RutaImg As String)
With Obj
'Borramos el contenido del picture
.Cls
'Para que al repintar no sepierda el gráfico
.AutoRedraw = True
End With
'Cargamos la imagen seleccionada del FileListBox
Set imagen = LoadPicture(RutaImg)
'Almacenamos el ancho y alto de la imagen
Ancho = imagen.Width
Alto = imagen.Height
'Sacamos el porcentaje para reescalar la imàgen
If Ancho > Obj.Width Or Alto > Obj.Height Then
If Ancho > Alto Then
Porcentaje = (Obj.Width * 100) / Ancho
Else
Porcentaje = (Obj.Height * 100) / Alto
End If
Call CentrarPicture(Obj)
Exit Sub
End If
If Ancho <= Obj.Width Or Alto <= Obj.Height Then
If Ancho > Alto Then
Porcentaje = (Obj.Width * 100) / Ancho
Else
Porcentaje = (Obj.Width * 100) / Alto
End If
End If
Call CentrarPicture(Obj)
End Sub
Public Sub CentrarPicture(Obj As Object)
Dim centro1 As Single
Dim centro2 As Single
'Sacamos el porcentaje del ancho y el alto
Ancho = ((Ancho * Porcentaje) / 100) / 0.99
Alto = ((Alto * Porcentaje) / 100) / 0.99
'La posicion X e y de la imagen dentro del Picture
centro1 = (Obj.Width - Ancho) / 2
centro2 = (Obj.Height - Alto) / 2
'Lo dibujamos
Obj.PaintPicture imagen, centro1, centro2, Ancho, Alto
'eliminamos la variable imagen
Set imagen = Nothing
End Sub
'//Controles Dir, File y Drive
Private Sub Dir1_Change()
File1 = Dir1
End Sub
Private Sub Drive1_Change()
Dir1 = Drive1
End Sub
Private Sub File1_Click()
On Error Resume Next
Call Establecer_Imagen(Picture1, Dir1 & "\" & File1.FileName)
End Sub
Private Sub Form_Load()
'Filtro para las extensiones de archivos gráficos a visualizar
File1.Pattern = "*.bmp;*.jpg;*.gif;*.jpeg"
End Sub
Private Sub Command1_Click()
imprimir
End Sub
Sub imprimir()
Printer.Print
VB.Printer.Scale (0, 0)-(200, 500)
Printer.ScaleMode = vbCentimeters
Printer.CurrentX = 50: Printer.CurrentY = 100
'for the position of the picture on paper
With Picture1
.AutoRedraw = True
.FontSize = 14
Picture1.Print ""
.Picture = .Image
Printer.PaintPicture Picture1.Picture, 0, 0, 20, 10
'En esta instruccion puedes indicarle tambien el tamaño
Printer.EndDoc
End With
End Sub
puedo imprimir la imagen, pero la calidad de impresion es muy mala, como puedo hacer para que esa calidad mejore???