como copiar el contenido de un picturebox?
hola a todos, mi problema es el siguiente, tengo una tabla con registros de lo que serian las posiciones X y Y donde se dibujaran las imagenes y otro con el nombre que ha de tener esa imagen, dentro del picture he colocado un image y un label y mediante el metodo load cargo y hago visibles tantos images y labels como registros haya, con la posicion y con el nombre indicados en la tabla, hasta ahi todo bien, ahora quiero copiar a otro picture o mandar a la impresora o archivo ese dibujo que se ha creado y es ahi donde no consigo nada, he provado con:
Picture1.PaintPicture Picture2.Image,X, Y,ancho, alto
tambien salvar la imagen antes pero igual, no se guarda lo dibujado, solo el fondo y/o la foto si le cargo alguna.
si alguien pudiera ayudarme le estaria muy agradecido.
Picture1.PaintPicture Picture2.Image,X, Y,ancho, alto
tambien salvar la imagen antes pero igual, no se guarda lo dibujado, solo el fondo y/o la foto si le cargo alguna.
si alguien pudiera ayudarme le estaria muy agradecido.
prueba este código:
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = origen
Private Sub Form_Click()
BitBlt Pic2.hDC, 0, 0, Pic1.ScaleWidth, Pic1.ScaleHeight, Pic1.hDC, 0, 0, SRCCOPY
Pic2.Refresh
End Sub
Para verlo funcionar abre un nuevo proyecto, inserta dos
pictureBox en el formulario y llamalos Pic1 y Pic2,
pon también algunos controles dentro de Pic1(para ver
que se copian como imagen),establece la propiedad
scalemode a píxels en los dos, y la propiedad autoredraw a ture en Pic2.
Funciona bien mientras Pic1 es completamente visible
pero si sus márgenes sobrepasan el límite del formulario
se copiara lo que se vea más allá de dicho margen en la pantalla.
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = origen
Private Sub Form_Click()
BitBlt Pic2.hDC, 0, 0, Pic1.ScaleWidth, Pic1.ScaleHeight, Pic1.hDC, 0, 0, SRCCOPY
Pic2.Refresh
End Sub
Para verlo funcionar abre un nuevo proyecto, inserta dos
pictureBox en el formulario y llamalos Pic1 y Pic2,
pon también algunos controles dentro de Pic1(para ver
que se copian como imagen),establece la propiedad
scalemode a píxels en los dos, y la propiedad autoredraw a ture en Pic2.
Funciona bien mientras Pic1 es completamente visible
pero si sus márgenes sobrepasan el límite del formulario
se copiara lo que se vea más allá de dicho margen en la pantalla.
