Documente Academic
Documente Profesional
Documente Cultură
Control personalizado
Velocímetro con C#
Control personalizado, velocímetro con C# Aintzane Conde
Control personalizado
Velocímetro con C#
Se trata de crear un control de usuario personalizado para poder utilizar un control de tipo
velocímetro.
Hacemos clic con el botón derecho sobre Class1.cs y lo eliminamos. Ahora pinchamos sobre
ClassLibrary1, también con el botón derecho para Agregar un Control de usuario:
Control personalizado, velocímetro con C# Aintzane Conde
Pinchando de nuevo en el User control1, seleccionamos del menú superior Ver y elegimos Código.
Debemos escribir el código que se encuentra al final de este artículo.
Damos al botón Iniciar depuración (Play), y cerramos la advertencia que nos aparece.
Control personalizado, velocímetro con C# Aintzane Conde
En las Propiedades de este control encontramos la denominada Mode, que podremos fijar en
Normal (parecido a un Progress bar) o en Velocímetro. Si utilizamos esta última nos aparecerá:
A partir de este punto, podemos utilizar nuestros datos para representarlos mediante este nuevo
control.
Control personalizado, velocímetro con C# Aintzane Conde
using System.Drawing.Drawing2D;
namespace ClassLibrary1
{
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
#region Variables
Graphics Graf;
protected int Val = 0;
protected Color ColorBarra = Color.CornflowerBlue;
protected Color ColorValor = Color.Black;
protected LinearGradientMode GradMode = LinearGradientMode.Vertical;
#endregion
#region Propiedades
public Modos Modes
{
get { return Modo; }
set
{
Modo = value;
if (value.ToString() != "Normal") { LblValor.Visible = false; }
else { LblValor.Visible = false; }
}
}
#region Voids
protected override void OnPaint(PaintEventArgs e)
{
Graf = this.CreateGraphics();
Graf.SmoothingMode = SmoothingMode.HighQuality;
if (Modo.ToString() == "Normal")
{
Rectangle Rec = new Rectangle(0, 0, this.Width, this.Height);
LinearGradientBrush LGB = new LinearGradientBrush(Rec, Color.FromArgb(255,
Color.White), Color.FromArgb(0, Color.White), GradMode);
LGB.Dispose();
}
else
{
int Porcentaje = Val * 3 + 180;
Design();
}
base.OnPaint(e);
}
int Num = 0;
for (int Cont = 30; Cont <= 80; Cont++)
{
if (Cont % 5 == 0)
{
Graf.DrawLine(new Pen(Color.Black, 2),
CentroX + (float)(Ra / 1.50F * Math.Sin(Cont * 6 * Math.PI / 180)),
CentroY - (float)(Ra / 1.50F * Math.Cos(Cont * 6 * Math.PI / 180)),
CentroX + (float)(Ra / 1.70F * Math.Sin(Cont * 6 * Math.PI / 180)),
CentroY - (float)(Ra / 1.70F * Math.Cos(Cont * 6 * Math.PI / 180)));
Num += 10;
}
else
{
Graf.DrawLine(new Pen(Color.Red, 2),
CentroX + (float)(Ra / 1.50F * Math.Sin(Cont * 6 * Math.PI / 180)),
CentroY - (float)(Ra / 1.50F * Math.Cos(Cont * 6 * Math.PI / 180)),
CentroX + (float)(Ra / 1.60F * Math.Sin(Cont * 6 * Math.PI / 180)),
CentroY - (float)(Ra / 1.60F * Math.Cos(Cont * 6 * Math.PI / 180)));
}
}
}
#endregion
}
}