none
poner una figura geometrica en un picture box RRS feed

  • Pregunta

  • Buenas noches .. soy nuevo en C# me podrian ayudar con este problemas lo que pasa es que quiero ingresar una figura como un cuadrado en un picturebox y luego al hacer click este desaparesca pero no me sale este es mi codigo. 

    utilice el formGraphics =((Picturebox)sender)CreateGraphics();    la figura desaparece y al ahacer click la figura aparece y yo quiero que me haga lo contrario

     private void pbxfigura_Paint(object sender, PaintEventArgs e)
            {
                
                SolidBrush myBrush = new SolidBrush(ColoreAleatorio());
                Graphics formGraphics;
               
                formGraphics = this.CreateGraphics();
                formGraphics.FillRectangle(myBrush, new Rectangle(pbxfigura.Location.X,pbxfigura.Location.Y, pbxfigura.Size.Width,pbxfigura.Size.Height));
                pbxfigura.BackColor = Color.Turquoise;
                
                myBrush.Dispose();
                formGraphics.Dispose();
                pbxfigura.Enabled = false;
               
            }
            private void pbxfigura_Click(object sender, EventArgs e)
            {

                pbxfigura.Enabled = false;

                
            }

    lunes, 1 de julio de 2019 4:03

Todas las respuestas

  • Es un poquito más complicado de lo que piensas. El problema es que el picturebox no necesariamente tiene siempre "memoria" de lo que está dibujado, por lo que tu programa tiene que estar dispuesto a repintarlo en cualquier momento en el que el Sistema operativo decida que tiene que repintarse. Cuando eso ocurre, se dispara el método Paint. Por lo tanto, el Paint tiene que estar preparado para poder pintar el picturebox en cualquier momento.

    Para ello, necesitas tener una variable a nivel de form que diga si la figura tiene que ser visible o no. Dentro del Paint, se examina la variable y se pinta la figura o se borra el contenido según indique la variable.

    Para que la figura desaparezca en el Click, el Click tiene que poner false en esa variable, y después forzar a que se dispare el Paint. Esto último se hace llamando al método Invalidate del picturebox.

    • Propuesto como respuesta Carlos_Ruiz_M martes, 2 de julio de 2019 15:09
    lunes, 1 de julio de 2019 6:53
    Moderador