Crear un PictureBox

11/09/2004 - 20:43 por Microsoft | Informe spam
Queridos programadores,

Admito que el asunto que he escrito os hará que parezca un tonto, pero
mi pregunta deriva un poco de ése titulo. Soy un programador de Visual
Basic, acostumbrado desde hace mucho a la IDE de VB6 y VB5. Al instalar el
VB.net no me estoy aclarando muy bien que digamos, pero bueno. Es mucho más
completo pero talmismo es mayormente complejo. En la versión de VB6 podíamos
crear fácilmente arrays de la mayoría de objetos (p.ej.: un array de
picturebox y por tanto crear picturebox en tiempo de ejecución sin necesidad
de utilizar recursos al inicio del programa), pues allí va mi preguntita:
tengo que crear un convertidor de carácteres a imágenes (como una especie de
geroglíficos) i por tanto deseaba crear un picturebox inicial con índice de
array (1) para que en tiempo de ejecución cuando el usuario escriba una
letra en el textbox dicha letra aparezca en un nuevo índice del array de
picturebox traducido en la pantalla

p.ej.:

1. escritura letra "j"
2. identificar letra mediante ascii o char
3. crear un nuevo picturebox (sea o no sea un array eso me da igual)
4. asignar el geroglífico correspondiente a la letra identificada al
nuevo picturebox
5. fin del evento

así sucesivamente hasta que el usuario acabe de escribir su texto
entero, el problema es que el usuario escribe todo su texto en un textbox, y
a medida que va escribiendo el programa va convirtiendo cada letra en un
geroglífico, resultando en un conjunto de geroglíficos(o picturebox) dentro
de un frame.

no sé si me entendeis, pero lo único que quiero es poder crear un picturebox
linea a linea sin que sea al inicio del programa.

Muchas Gracias,

Jags

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
12/09/2004 - 06:04 | Informe spam
En .NET todo se hace en tiempo de ejecucion. El diseñador lo que hace es
agregar el codigo necesario para recrear los controles puestos en el
formulario. Puedes ver el codigo en el metodo InitializeComponent. Esa misma
forma es la que tienes que usar para generar tus PictureBox (aunque quizas
no sea lo mejor ya que no se comportan exactamente igual que en VB6). Por
ejemplo:

' Creo el PictureBox
Dim pb As New PictureBox

' Coloco posicion y tamaño
pb.Location = New Point(10, 10)
pb.Size = New Size(100, 100)

' Lo agrego al formulario
Me.Controls.Add(pb)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Microsoft
12/09/2004 - 11:48 | Informe spam
Muchas Gracias

Me faltava la línea del add.

Adoro este grupo de noticias

Gracias,

Jags
"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:
En .NET todo se hace en tiempo de ejecucion. El diseñador lo que hace es
agregar el codigo necesario para recrear los controles puestos en el
formulario. Puedes ver el codigo en el metodo InitializeComponent. Esa


misma
forma es la que tienes que usar para generar tus PictureBox (aunque quizas
no sea lo mejor ya que no se comportan exactamente igual que en VB6). Por
ejemplo:

' Creo el PictureBox
Dim pb As New PictureBox

' Coloco posicion y tamaño
pb.Location = New Point(10, 10)
pb.Size = New Size(100, 100)

' Lo agrego al formulario
Me.Controls.Add(pb)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#3 Willy [MX]
12/09/2004 - 14:13 | Informe spam
Sub AgregaPicPanel(ByRef MiPanel As System.Windows.Forms.Panel, _
ByVal Ancho As Integer, ByVal Alto As Integer,
ByVal ArchivoBMP as String)
Dim indice As Integer = MiPanel.Controls.Count
Dim Pic As New System.Windows.Forms.PictureBox
Pic.Location = New System.Drawing.Point(indice * ancho, 0)
Pic.Size = New System.Drawing.Size(ancho, alto)
Pic.Name = "Pic" & indice
Try
Pic.Image = New Bitmap(ArchivoBMP)
Catch
Beep()
End Try
MiPanel.Controls.Add(Pic)
End Function

Sub RemuevePicPanel(ByRef MiPanel As System.Windows.Forms.Panel, _
ByVal indice As Integer)
If indice > -1 Then
Dim Pic As PictureBox = _
CType(MiPanel.Controls.Item(indice), PictureBox)
If (Not Pic Is Nothing) Then
MiPanel.Controls.Remove(Pic)
Pic.Dispose()
End If
End If
End Sub

Ya solo resta que hagas el codigo del KeyPress o KeyUp...

Saludos,
Willy [MX]
"El error es una hoja garabateada que primero hay que borrar."
- Charles Caleb Colton (1780-1832); poeta y ensayista inglés.


Microsoft wrote:
Queridos programadores,

Admito que el asunto que he escrito os hará que parezca un tonto,
pero mi pregunta deriva un poco de ése titulo. Soy un programador de
Visual Basic, acostumbrado desde hace mucho a la IDE de VB6 y VB5. Al
instalar el VB.net no me estoy aclarando muy bien que digamos, pero
bueno. Es mucho más completo pero talmismo es mayormente complejo. En
la versión de VB6 podíamos crear fácilmente arrays de la mayoría de
objetos (p.ej.: un array de picturebox y por tanto crear picturebox
en tiempo de ejecución sin necesidad de utilizar recursos al inicio
del programa), pues allí va mi preguntita: tengo que crear un
convertidor de carácteres a imágenes (como una especie de
geroglíficos) i por tanto deseaba crear un picturebox inicial con
índice de array (1) para que en tiempo de ejecución cuando el usuario
escriba una letra en el textbox dicha letra aparezca en un nuevo
índice del array de picturebox traducido en la pantalla

p.ej.:

1. escritura letra "j"
2. identificar letra mediante ascii o char
3. crear un nuevo picturebox (sea o no sea un array eso me da
igual)
4. asignar el geroglífico correspondiente a la letra identificada
al nuevo picturebox
5. fin del evento

así sucesivamente hasta que el usuario acabe de escribir su texto
entero, el problema es que el usuario escribe todo su texto en un
textbox, y a medida que va escribiendo el programa va convirtiendo
cada letra en un geroglífico, resultando en un conjunto de
geroglíficos(o picturebox) dentro de un frame.

no sé si me entendeis, pero lo único que quiero es poder crear un
picturebox linea a linea sin que sea al inicio del programa.

Muchas Gracias,

Jags
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida