Hola danielbmz bienvenido al foro.
Me parece que estas confundiendo como funciona la propiedad Opacity.
Opacity contiene un numero que representa un porcentaje de opacidad, siendo 0 (0 %) completamente transparente, y 1.0 (100%) completamente opaco.
Entonces en lugar de incrementar/decrementar en intervalos de 0.5, seria mas correcto incrementar en intervalos de 0.1 (10%), y nunca sobrepasar el 1.0 (100%)
Te dejo un codigo de como lo haria yo en intervalos de 10%, y nunca una opacidad menor al 50% (0.5), ya que en mi caso menos del 50% practicamente ya no se ve el formulario, sin embargo, puedes probarlo con valores menor al 50% si lo deseas.
Utilizo un switch con valores enteros ya que:
1. si utilizas if, y comparas valores de tipo double, habra errores de redondeo y es probable que no incrementes/decrementes correctamente.
2. El switch no admite valores de tipo double.
public partial class Form1 : Form
{
int opaco = 5;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (opaco != 0)
opaco--;
switch (opaco)
{
case 4: this.Opacity = 0.9;
break;
case 3: this.Opacity = 0.8;
break;
case 2 : this.Opacity = 0.7;
break;
case 1 : this.Opacity = 0.6;
break;
case 0 : this.Opacity = 0.5;
break;
}
}
private void button2_Click(object sender, EventArgs e)
{
if (opaco != 5)
opaco++;
switch (opaco)
{
case 5: this.Opacity = 1.0;
break;
case 4: this.Opacity = 0.9;
break;
case 3: this.Opacity = 0.8;
break;
case 2: this.Opacity = 0.7;
break;
case 1: this.Opacity = 0.6;
break;
}
}
}
Saludos