Autor
|
Tema: Como mandar un picturebox con winsock (Leído 5,112 veces)
|
Xephiro
|
Buenas XD aqui yo nuevamente con otra pregunta XD... Como se puede mandar un picturebox por medio de winsock en un sistema cliente - servidor a otro picturebox ?
|
|
|
En línea
|
|
|
|
DrakoX
Desconectado
Mensajes: 191
|
Sinceramente, no sabria como hacerlo,
pero si tienes acceso a la imagen, podrias mandarlo como un archivo normal
salu2
|
|
|
En línea
|
|
|
|
Snort
Desconectado
Mensajes: 338
|
Tendrias qe guardar la imagen del picturebox en un archivo, y luego mandar el archivo, y al llegar, pon qe si la extension es jpg, bmp, o la qe sea, de imagen, la abra desde el otro picturebox
|
|
|
En línea
|
|
|
|
CeLaYa
Desconectado
Mensajes: 543
|
tomando la idea de Snort creo que se podría hacer asi: 'Para enviar la imagen lo hago desde un command Button y la guardo en un archivo llamado "x.jpg"
Private Sub Command1_Click() Dim x As String, f As Long SavePicture Picture1.Picture, "c:\x.jpg" f = FreeFile Open "C:\x.jpg" For Binary Access Read As #f x = Space(LOF(f)) Get #f, , x Close #f winsock1.SendData x End Sub
'Para recibir lo hago con strdata y lo guardo en un archivo "x2.jpg" y luego cargo la imagen en el picture Private Sub winsock2_DataArrival(ByVal bytesTotal As Long) Dim strData As String, f As Long winsock2.GetData strData txtOutput.Text = txtOutput.Text & strData f = FreeFile Open "C:\x2.jpg" For Binary Access Write As #f Put #f, , txtOutput.Text Close #f On Local Error Resume Next Picture1.Picture = LoadPicture("c:\x2.jpg") On Local Error GoTo 0 End Sub
|
|
|
En línea
|
"La soledad es el elemento de los grandes talentos". Cristina de Suecia (1626-1689) Reina de Suecia.
|
|
|
|
<?BRoWLi?>
Desconectado
Mensajes: 109
Kien mira por ti?
|
Deberías enviar por lotes... por ejemplo de 1KB... Dim variable as tipo * 1024... entonces la diferencia se notaría menos (mientras menores sean los lotes mejor...) y para saber cuando acaba... envía primero el tamaño... nuevaVariable = FileLen "pathdelarchivo" u.. open... nuevaVariable = input(Lof(canal), - canal), si lo has avierto... y a continuación...
...Close ws.senddata nuevaVariable x cierto nuevaVariable es Long... y luego lo recibes en el dataarrival... if left(buffer, n... y lo igualas a cualquier ProgressBar.. pb.max = buffer... y lo que te vaya llegando lo vas añadiendo como long a una nueva variable... o simplemente bytesrecibed en pb.value... suerte...
|
|
« Última modificación: 27 Diciembre 2006, 21:59 pm por BRoWLi »
|
En línea
|
Si TRaTaS D SeR JusTo SoLo Es JuSTo EL CoRaZóN, LoS DeMaS OrGaNoS TRaTaRaN De KiTaRLe La RaZoN - DobleV Piratas.com.es
|
|
|
CeLaYa
Desconectado
Mensajes: 543
|
BRoWLi gracias por tu comentario, modifique un poco el código que puse y quedo así, aver que opinan, porque es la 1a vez que le meto mano al winsock: Para enviar 'Aqui le envio el tamaño de la imagen Private Sub Command1_Click() Dim x As String, f As Long SavePicture Picture1.Picture, "c:\x.jpg" Tamaño = FileLen("c:\x.jpg") tcpServer.SendData Str(Tamaño) End Sub
'Espero a que el cliente me conteste que recibio el tamaño de la imagen y ahora si le envio el archivo Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long) Dim strData As String, f As Long, x As String tcpServer.GetData strData txtOutput.Text = strData If strData = "RECIBIDO" Then f = FreeFile Open "C:\x.jpg" For Binary Access Read As #f x = Space(LOF(f)) Get #f, , x Close #f tcpServer.SendData x Kill "C:\x.jpg" End If End Sub
Para recibir Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long) Dim strData As String, f As Long tcpClient.GetData strData 'si el max de progress bar es 1 le pongo el tamaño del archivo If ProgressBar1.Max = 1 Then ProgressBar1.Max = Val(strData) ProgressBar1.Value = 0 tcpClient.SendData "RECIBIDO" t = 0 Exit Sub End If 'aqui voy recibiendo e incrementando el Progressbar txtOutput.Text = txtOutput.Text & strData ProgressBar1.Value = bytesTotal t = t + bytesTotal
'Cuando ya lo tengo todo creo un archivo y lo cargo al picture If ProgressBar1.Max = t Then f = FreeFile Open "C:\x2.jpg" For Binary Access Write As #f Put #f, , txtOutput.Text Close #f Picture1.Picture = LoadPicture("c:\x2.jpg") ProgressBar1.Max = 1 txtOutput.Text = "" Kill "C:\x2.jpg" End If End Sub
|
|
|
En línea
|
"La soledad es el elemento de los grandes talentos". Cristina de Suecia (1626-1689) Reina de Suecia.
|
|
|
<?BRoWLi?>
Desconectado
Mensajes: 109
Kien mira por ti?
|
Muy buen code!
Aunque, no he vsto x ninguna parte lo del flujo de datos, ten encuenta que s el archivo es mayor al real (el que se te crea), el prograssbar no será exacto... aunque está muy bien el code... Un saludo!
|
|
|
En línea
|
Si TRaTaS D SeR JusTo SoLo Es JuSTo EL CoRaZóN, LoS DeMaS OrGaNoS TRaTaRaN De KiTaRLe La RaZoN - DobleV Piratas.com.es
|
|
|
DrakoX
Desconectado
Mensajes: 191
|
lindo code, lo que seria interesante, seria ver si existe aguna relación en el incremento del tamaño, probandolo con diferentes imagenes, y de esa forma lograr que el progresbar sea mas preciso
salu2
|
|
|
En línea
|
|
|
|
CeLaYa
Desconectado
Mensajes: 543
|
Gracias, referente a lo del tamaño de la imagen creo que no me di a entender, lo que pasa esque la imagen que cargo al picture es de 3.5Kb y cuando le pongo SavePicture me crea un archivo de 23kb, creo que es porque lo manda como bmp, y lo tendría que pasar a jpg, pero bueno de eso ya se ha hablado mucho aqui, igual y me pongo a búscarle...
|
|
|
En línea
|
"La soledad es el elemento de los grandes talentos". Cristina de Suecia (1626-1689) Reina de Suecia.
|
|
|
|
|