SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: JaviMarciano en Miércoles 18 de Julio de 2007, 23:29

Título: Formulario Con Forma
Publicado por: JaviMarciano en Miércoles 18 de Julio de 2007, 23:29
Alguien sabe como darle una forma al formulario, me refiero a que tenga una forma distinta al común rectángulo original
Título: Re: Formulario Con Forma
Publicado por: x_reaccion en Jueves 19 de Julio de 2007, 07:36
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# (http://www.dotnet247.com/247reference/a.aspx?u=http://www.c-sharpcorner.com/Graphics/ShapedFormsJOD.asp)
Non-Rectangular Form (http://weblogs.asp.net/cumpsd/articles/79878.aspx)
Título: Re: Formulario Con Forma
Publicado por: JaviMarciano en Miércoles 25 de Julio de 2007, 03:05
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!!!!!
Título: Re: Formulario Con Forma
Publicado por: Neopro en Miércoles 25 de Julio de 2007, 16:09
Excelente.. :kicking:
Título: Re: Formulario Con Forma
Publicado por: Mollense en Miércoles 25 de Julio de 2007, 16:30
Que buen aporte...

...gracias.