• Sábado 4 de Mayo de 2024, 22:57

Autor Tema:  Formulario Con Forma  (Leído 1558 veces)

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Formulario Con Forma
« en: Miércoles 18 de Julio de 2007, 23:29 »
0
Alguien sabe como darle una forma al formulario, me refiero a que tenga una forma distinta al común rectángulo original

x_reaccion

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Formulario Con Forma
« Respuesta #1 en: Jueves 19 de Julio de 2007, 07:36 »
0
Hola

Aquí hay dos articulos espero te sirvan el problema : estan en ingles  :blink:

Espero que no tengas problemas, no respondo con mis conocimientos por que no tengo respecto a lo que pides (solo me tope con los articulos).

Shaped Forms in C#
Non-Rectangular Form
u.u no quiero cumplir 20 T_T

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Formulario Con Forma
« Respuesta #2 en: Miércoles 25 de Julio de 2007, 03:05 »
0
Bueno, ya encontre la respuesta, y me parece que está bueno que la comparta, pues creo que a muchos les puede interesar, no es tan complicado como pensaba. solo hay que hacer una imagen con cualquier programa para imagenes (hasta con el Paint se puede hacer) por ejemplo un simple círculo, este tiene que tener un color (por ej: rojo) y un fondo de un color diferente al círculo (por ej: blanco), luego asignarle esa imagen a la propiedad BackgroundImage del formulario, después a la propiedad TransparencyKey, el color de fondo de la imagen, esto hace que todo lo que sea del color que se le asigna a esta propiedad sea transparente, en nuestro ejemplo Blanco, luego a la propiedad FormBorderStyle, asignarle el valor None de esta forma el formulario no tendrá bordes ni barra de título, solo se verá el círculo rojo de nuestra imagen, ahora ya está listo ya tenemos un formulario circular. pero hay algo que se debe tener en cuenta, al no tener la barra anteriormente mensionada, deja el programa de tener algo importante, en principio no podemos minimizar ni max. ni cerrar el form, eso es fácil, le agregamos algunos botones y listo, ahora el problema es que no podemos moverlo (jeje pequeño detalle) pero aquí va la solución:

Se deben declarar estos dos objetos como globales y luego agregar los tres métodos  siguientes, y sus respectivos eventos, en este caso los agregué en el Form_Load

public Point mouseOffset;
public bool isMouseDown = false;


        private void Form1_Load(object sender, EventArgs e)
        {
            this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);
            this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
            this.MouseUp += new MouseEventHandler(Form1_MouseUp);
        }

        private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {

            int xOffset;
            int yOffset;

            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight -
                    SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }

        }


 private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X, mouseOffset.Y);
                Location = mousePos;
            }
        }


        private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            // Changes the isMouseDown field so that the form does
            // not move unless the user is pressing the left mouse button.
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }
        }
 


eso es todo ahora podemos mover el formulario posicionando el puntero en el círculo rojo que es nuestro formulario hacer click y moverlo como se nos antoje!!!!!

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Formulario Con Forma
« Respuesta #3 en: Miércoles 25 de Julio de 2007, 16:09 »
0
Excelente.. :kicking:
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Formulario Con Forma
« Respuesta #4 en: Miércoles 25 de Julio de 2007, 16:30 »
0
Que buen aporte...

...gracias.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.