La Web del Programador: Comunidad de Programadores
 
    Pregunta:  49676 - IMPRIMIR GRAFICO
Autor:  luis juarez
Hola a todos, quiera ver si me podrian ayudar, mi problema es que quiero imprimir un grafico que tengo en una form y ya e leido que primero lo tengo que enviar al portapapeles y despues pegarlo en el printpreview pero ese ultimo punto es el que no se como hacerlo, si alguien me podria ayudar en eso o si tienen alguna idea mejor se las agradeceria muchisimo

Gracias.

  Respuesta:  albe delg
no se bien como es eso del porta papeles pero he tenido q hacer eso q quieres y lo q hago es utilizar las apis de windows... lo q hago es un print screen al form trabajar con la imagen y despues imprimirla...
aqui te mando el ejemplo de la api..

Module pscreen
Private Declare Function CreateDC Lib "GDI32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, ByVal lpInitData As String) As IntPtr

Private Declare Function CreateCompatibleDC Lib "GDI32" (ByVal hDC As IntPtr) As IntPtr

'cria um bitmap compatível com o dispostivo associato ao contexto usado.
Private Declare Function CreateCompatibleBitmap Lib "GDI32" (ByVal hDC As IntPtr, ByVal nWidth As Integer, ByVal nHeight As Integer) As IntPtr

Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As IntPtr, ByVal hObject As IntPtr) As IntPtr

Private Declare Function BitBlt Lib "GDI32" (ByVal srchDC As IntPtr, ByVal srcX As Integer, ByVal srcY As Integer, ByVal srcW As Integer, ByVal srcH As Integer, ByVal desthDC As IntPtr, ByVal destX As Integer, ByVal destY As Integer, ByVal op As Integer) As Integer

Private Declare Function DeleteDC Lib "GDI32" (ByVal hDC As IntPtr) As Integer

Private Declare Function DeleteObject Lib "GDI32" (ByVal hObj As IntPtr) As Integer

Const SRCCOPY As Integer = &HCC0020

Public Function capturaTela() As Bitmap
' ----- pega uma imagem da tela
Dim screenHandle As IntPtr
Dim canvasHandle As IntPtr
Dim screenBitmap As IntPtr
Dim previousObject As IntPtr
Dim resultCode As Integer
Dim screenShot As Bitmap

' ----- Obtém uma referencia para o display.
screenHandle = CreateDC("DISPLAY", "", "", "")

' ----- Crie um canvas que vai servir como uma exibição
canvasHandle = CreateCompatibleDC(screenHandle)

' ----- Crie um bitmap que será tratado como a imagem da tela
screenBitmap = CreateCompatibleBitmap(screenHandle, screen.PrimaryScreen.Bounds.Width, screen.PrimaryScreen.Bounds.Height)

' ----- Copie a imagem da tela para Canvas
previousObject = SelectObject(canvasHandle, screenBitmap)
resultCode = BitBlt(canvasHandle, 0, 0, screen.PrimaryScreen.Bounds.Width, screen.PrimaryScreen.Bounds.Height, screenHandle, 0, 0, SRCCOPY)

screenBitmap = SelectObject(canvasHandle, previousObject)

' ----- encerra
resultCode = DeleteDC(screenHandle)
resultCode = DeleteDC(canvasHandle)

' ----- Copia a imagem para um bitmap .NET.
screenShot = Image.FromHbitmap(screenBitmap)
DeleteObject(screenBitmap)

' ----- encerra
Return screenShot
End Function
End Module
........
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Dim imagen As New Bitmap(800, 600)
imagen = pscreen.capturaTela
end sub