dibujado de lineas C#

Iniciado por Zeroql, 13 Marzo 2016, 01:09 AM

0 Miembros y 1 Visitante están viendo este tema.

Zeroql

Hola
Estoy intentando dibujar lineas al cargar el formulario en c#, pero al compiliar no se muestras estas en el formulario. me pueden ayudar validando que estoy haciendo mal?

Gracias

este es el codigo que estoy utlizando,

Código (csharp) [Seleccionar]
private void frmUserOpt_Load(object sender, EventArgs e) {
            //Dibujar las lineas
            Pen oPen = new Pen(Color.Gainsboro, 3);
            Graphics oPanel = this.CreateGraphics();
            oPanel.DrawLine(oPen, 0, 50, this.Width, 50);
            oPanel = pnlBackGround.CreateGraphics();
            oPen.Color = Color.White;
            oPanel.DrawLine(oPen, 0, 30, this.Width, 30);
            oPanel.DrawLine(oPen, 0, 50, this.Width, 50);
            oPen.Dispose();
            oPanel.Dispose();
        }
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


El Benjo

Cualquier método que dibuje durante la carga del formulario será borrado ya que, cuando este se muestra, ocurre el evento Paint del mismo. Por ende todo lo que había sido dibujado se borra. Debes recordar que los gráficos no son persistentes y se borran cada que ocurre dicho evento. Si lo que quieres es que tus gráficos persistan debes de colocar tu código dentro del evento Paint.

Nota: Cuando dibujes en el evento Paint encontrarás que uno de los parámetros pasados a la función es del tipo PaintEventArgs o algo así. Tienes que utilizar el campo graphics de dicha variable para dibujar, de lo contrario tampoco se mostrará lo que dibujes.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

Zeroql

Gracias El Benjo, no habia notado el evento onpaint.
Ya funciona de maravilla.
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


Eleкtro

#3
Añado a lo que ha explicado el compañero @El Benjo:

Ten en cuenta para el futuro, que no todas las clases permiten usar el invocador (OnPaint) del evento Paint a tu antojo, en algunas clases, como por ejemplo la class TextBox, primeramente debes activar el dibujado de usuario, de la siguiente manera:

Código (vbnet) [Seleccionar]
Public Class MyTextBox: Inherits TextBox

   Public Sub New()
       Me.SetStyle(ControlStyles.UserPaint, value:=True)
   End Sub

   Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
       MyBase.OnPaint(e)
       ' ...
   End Sub

End Class


C#:
Código (csharp) [Seleccionar]
public class MyTextBox : TextBox {

public MyTextBox() {
this.SetStyle(ControlStyles.UserPaint, value: true);
}

protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
// ...
}
}

//=======================================================
//Service provided by Telerik (www.telerik.com)
//=======================================================


Saludos.