Graphics en un boton

09/05/2006 - 23:44 por Bernardo Campos | Informe spam
Hola amigos, dibujo una linea en un boton A, en el evento clic, lo hace
correctamente, el problema está cuando le hago click en otro boton B, se me
borra la linea del boton A. Utilizo vb 2002. Cómo hago para que permanezca
la linea dibujada?

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
10/05/2006 - 14:24 | Informe spam
Hola Bernardo

Una vez que dibujas algún elemento en la superficie del formulario, cuando
dicho dibujo es tapado por otra ventana por ejemplo, Windows no mantiene
dichos elementos visuales si no están siendo mostrados; siendo labor del
programador el mantener actualizado su dibujo.

Una forma de solucionar el problema sería reemplazar el evento Paint() del
formulario, de forma que cuando pulses el primer botón, además de dibujar la
línea, actives una variable que te sirva para saber que a partir de ese
momento quieres mantener dicha línea dibujada.

A continuación reemplazas el evento Paint() del formulario y si el valor de
la variable te indica que dibujes la línea, ejecutas el código para ello.

Te adjunto un bloque de código con un ejemplo para que lo pruebes:

'/////////////////////////////
Public Class Form1
Inherits System.Windows.Forms.Form

Private bPersistirLinea As Boolean = False

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim oPen As New Pen(Color.DarkGreen, 7)
Dim oGraphics As Graphics = Me.CreateGraphics()
oGraphics.DrawLine(oPen, New Point(10, 100), New Point(400, 100))
bPersistirLinea = True
End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
If bPersistirLinea Then
Dim oPen As New Pen(Color.DarkGreen, 7)
Dim oGraphics As Graphics = Me.CreateGraphics()
oGraphics.DrawLine(oPen, New Point(10, 100), New Point(400, 100))
End If
End Sub
End Class
'/////////////////////////////

Evidentemente, el código que se encarga de dibujar la línea se puede
optimizar para evitar su repetición, aunque en este caso he preferido dejarlo
así a efectos de simplificar el ejemplo.

Espero que te sirva para resolver el problema.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Bernardo Campos" wrote:

Hola amigos, dibujo una linea en un boton A, en el evento clic, lo hace
correctamente, el problema está cuando le hago click en otro boton B, se me
borra la linea del boton A. Utilizo vb 2002. Cómo hago para que permanezca
la linea dibujada?

Gracias de antemano.
Respuesta Responder a este mensaje
#2 Bernardo Campos
10/05/2006 - 18:21 | Informe spam
Gracias Luis Miguel por tu ayuda, lo voy a probar.



"Luis Miguel Blanco" wrote:

Hola Bernardo

Una vez que dibujas algún elemento en la superficie del formulario, cuando
dicho dibujo es tapado por otra ventana por ejemplo, Windows no mantiene
dichos elementos visuales si no están siendo mostrados; siendo labor del
programador el mantener actualizado su dibujo.

Una forma de solucionar el problema sería reemplazar el evento Paint() del
formulario, de forma que cuando pulses el primer botón, además de dibujar la
línea, actives una variable que te sirva para saber que a partir de ese
momento quieres mantener dicha línea dibujada.

A continuación reemplazas el evento Paint() del formulario y si el valor de
la variable te indica que dibujes la línea, ejecutas el código para ello.

Te adjunto un bloque de código con un ejemplo para que lo pruebes:

'/////////////////////////////
Public Class Form1
Inherits System.Windows.Forms.Form

Private bPersistirLinea As Boolean = False

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim oPen As New Pen(Color.DarkGreen, 7)
Dim oGraphics As Graphics = Me.CreateGraphics()
oGraphics.DrawLine(oPen, New Point(10, 100), New Point(400, 100))
bPersistirLinea = True
End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
If bPersistirLinea Then
Dim oPen As New Pen(Color.DarkGreen, 7)
Dim oGraphics As Graphics = Me.CreateGraphics()
oGraphics.DrawLine(oPen, New Point(10, 100), New Point(400, 100))
End If
End Sub
End Class
'/////////////////////////////

Evidentemente, el código que se encarga de dibujar la línea se puede
optimizar para evitar su repetición, aunque en este caso he preferido dejarlo
así a efectos de simplificar el ejemplo.

Espero que te sirva para resolver el problema.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Bernardo Campos" wrote:

> Hola amigos, dibujo una linea en un boton A, en el evento clic, lo hace
> correctamente, el problema está cuando le hago click en otro boton B, se me
> borra la linea del boton A. Utilizo vb 2002. Cómo hago para que permanezca
> la linea dibujada?
>
> Gracias de antemano.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida