Visual Basic - PictureBox AYUDA !!Por Favor!!

Life is soft - evento anual de software empresarial
 
Vista:

PictureBox AYUDA !!Por Favor!!

Publicado por ShOcKeR (3 intervenciones) el 14/12/2005 22:47:43
hola a todos y gracias por su tiempo mi problema es el siguiente, en una parte del programa que estoy haciendo necesito que este mande a imprimir un PictureBox, ok, este PictureBox contiene una imagen , 2 labels y 1 image control.
Para que les quede mas claro cuando llegas a la parte donde esta el pictureBox este contiene una imagen (una postal) entonces tu puedes cargarle en un Image control una imagen y agregarle texto en las 2 labels lo que yo quiero es que al precionar en el boton "imprimir" este PictureBox se imprima con todo su contenido tal y como se ve, y me parecio que lo mas correcto era usar esta sentencia:

Printer.PaintPicture Picture1.Picture, 10, 10, 2355, 1035

pero al mandarlo a imprimir me dice "Invalid Picture"

bueno perdonden si me extendi mucho y desde ya muchas gracias.
Salu2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PictureBox AYUDA !!Por Favor!!

Publicado por jorge (231 intervenciones) el 23/12/2005 19:03:21
n vez de poner eso pon esto
Printer.PaintPicture Picture1.image, 10, 10, 2355, 1035, esto imprime el cntenido del picturebox, si deseas imprimer textto, dentro del picterubx debes meter el texto, asi
Picture1.Print("Texto"), con currentx, currenty, defines donde lo deseas imprimir, ademas puedes saber el alto y ancho del texto, con Picture1.TextHeight("Texto)"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Daniel

RE:PictureBox AYUDA !!Por Favor!!

Publicado por Daniel (360 intervenciones) el 24/12/2005 11:51:37
Aqui tienes un ejemplo de ambos casos www.cydmatica.unlugar.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:TE dejo un ejemplo de Micro$oft

Publicado por Luciano Esteban Lodola (98 intervenciones) el 26/12/2005 03:11:19
Extraído del artículo Q230502 de la KB de Microsoft.

El método PrintForm imprime sólo la parte del formulario que se muestra. Este artículo muestra cómo imprimir un formulario que es más grande que la pantalla o que sólo se ve parcialmente.

MAS INFORMACION
Si necesitas imprimir un formulario mayor que la pantalla, o que sólo se muestra parcialmente, debes situar los controles del formulario en un PictureBox. Este imprime el bitmap que contiene, en lugar de la captura de pantalla del formulario que es lo que hace PrintForm. Como el bitmap del PictureBox está almacenado en un device context en memoria, tienes acceso al bitmap entero y no a la parte que se muestra.

NOTA: Para el propósito de este artículo, la altura del formulario se ha puesto en 11 pulgadas. Si necesitas otro tamaño, como 8,5 x 14 pulgadas, modifica la variable sTall. También debes tener en cuenta que esta medidas están realizadas en twips porque es la escala por defecto de los formualrios. Si cambias la propiedad ScaleMode necesitas cambiar estos valores adecuadamente.

Imprimir un formulario más grande que la pantalla.
- Arranca un nuevo proyecto, se creará el formulario Form1 por defecto.

- Añade dos PictureBox al formulario, evitando situar el segundo dentro del primero.

- Pulsa con el botón derecho sobre Picture2 y selecciona "Enviar al fondo".

- Añade dos etiquetas al Picture1, dejando Picture2 vacío.

- Añade el siguiente código a la sección de Declaraciones del formulario Form1:

Private Const twipFactor = 1440
Private Const WM_PAINT = &HF
Private Const WM_PRINT = &H317
Private Const PRF_CLIENT = &H4& ' Draw the window's client area.
Private Const PRF_CHILDREN = &H10& ' Draw all visible child windows.
Private Const PRF_OWNED = &H20& ' Draw all owned windows.

Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

Private Sub Form_Load()
Dim sWide As Single, sTall As Single
Dim rv As Long

Me.ScaleMode = vbTwips ' default
sWide = 8.5
sTall = 11 ' or 14, etc.
Me.Width = twipFactor * sWide
Me.Height = twipFactor * sTall
With Picture1
.Top = 0
.Left = 0
.Width = twipFactor * sWide
.Height = twipFactor * sTall
End With
With Picture2
.Top = 0
.Left = 0
.Width = twipFactor * sWide
.Height = twipFactor * sTall
End With
With Label1
.Caption = "Top"
.Left = Me.Width / 2
.Top = 0
End With
With Label2
.Caption = "Bottom"
.Top = (twipFactor * sTall) - .Height * 2
.Left = Me.Width / 2
End With
Me.Visible = True
DoEvents

Picture1.SetFocus
Picture2.AutoRedraw = True
rv = SendMessage(Picture1.hwnd, WM_PAINT, Picture2.hDC, 0)
rv = SendMessage(Picture1.hwnd, WM_PRINT, Picture2.hDC, _
PRF_CHILDREN + PRF_CLIENT + PRF_OWNED)
Picture2.Picture = Picture2.Image
Picture2.AutoRedraw = False

Printer.Print ""
Printer.PaintPicture Picture2.Picture, 0, 0
Printer.EndDoc
End Sub

- Ejecuta el proyecto.

Las etiquetas Top y Botton deben aparecer en sus respectivas posiciones, independientemente de si el formulario se muestra por completo.

Imprimir un formulario en más de una página.
Si el formulario que estás imprimiendo es demasiado grande para caber en una página puedes emplear un sistema similar. El método PaintPicture tiene varios parámetros opcionales que sirven, entre otras cosas, para imprimir sólo parte de la imagen.

Para verlo localiza el siguiente código en el ejemplo anterior:

Printer.Print ""
Printer.PaintPicture Picture2.Picture, 0, 0
Printer.EndDoc

Sustitúyelas por lo siguiente :

Printer.Print ""
Printer.PaintPicture Picture2.Picture, 0, 0, , , _
0, 0, , Picture2.Height / 2
Printer.NewPage
Printer.PaintPicture Picture2.Picture, 0, 0, , , _
0, Picture2.Height / 2, , Picture2.Height / 2
Printer.EndDoc

Este código divide el formulario en dos partes a modo de ejemplo. Puedes ajustar la región de corte a tus necesidades.

NOTA: La ayuda en línea de Visual Basic 6.0 dice que PrintForm imprime el formulario entero, incluso si no está visible por completo. Esta información es errónea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:TE dejo un ejemplo de Micro$oft

Publicado por ShOcKeR (3 intervenciones) el 27/12/2005 20:18:38
Muxas gracias a todos gracias a ustedes solucione el problemilla
GRACIAS
Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar