Formularios no Rectangulares

Moderador: raul338

C#, tambien llamado C Sharp

Formularios no Rectangulares

Notapor JaviMarciano » Mié Jul 18, 2007 5:18 pm

Como hacer formularios que no sean rectangulares?
JaviMarciano
Novato
Novato
 
Mensajes: 11
Registrado: Mié Jul 18, 2007 4:53 pm


Notapor JaviMarciano » Dom Ago 19, 2007 10:32 am

bueno yo mismo publiqué esta pregunta, y ahora que se la respuesta, está bueno que la comparta con ustedes!!

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!!!!!
JaviMarciano
Novato
Novato
 
Mensajes: 11
Registrado: Mié Jul 18, 2007 4:53 pm



    

Volver a C#

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados