Comment est-ce que je peux régler l'opacité du winform à quelque chose comme 50% tout en déplaçant le formulaire en draguant la barre de titre et réinitialiser son opacité à 100% quand le bouton gauche de la souris est levé.Comment rendre le formulaire partiellement transparent lors du déplacement?
0
A
Répondre
2
Définissez Form.Opacity sur 0,5 en réponse à WM_NCLBUTTONDOWN dans WndProc de votre formulaire.
Définissez ensuite Opacité sur 1.0 lorsque WM_NCLBUTTONUP est reçu.
2
Voici un exemple de code:
public partial class Form1 : System.Windows.Forms.Form
{
private const long BUTTON_DOWN_CODE = 0xa1;
private const long BUTTON_UP_CODE = 0xa0;
private const long WM_MOVING = 0x216;
static bool left_button_down = false;
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
//Check the state of the Left Mouse Button
if ((long)m.Msg == BUTTON_DOWN_CODE)
left_button_down = true;
else if ((long)m.Msg == BUTTON_UP_CODE)
left_button_down = false;
if (left_button_down)
{
if ((long)m.Msg == WM_MOVING)
{
//Set the forms opacity to 50% if user is moving
if (this.Opacity != 0.5)
this.Opacity = 0.5;
}
}
else if (!left_button_down)
if (this.Opacity != 1.0)
this.Opacity = 1.0;
base.DefWndProc(ref m);
}
}
3
Fait intéressant, vous pouvez aussi le faire dans le OnResizeBegin et OnResizeEnd remplace - cela s'applique à la fois le déplacement et le redimensionnement de la forme.
Si vous souhaitez modifier l'opacité uniquement lors du déplacement et non lors du redimensionnement, la réponse d'alex est meilleure.
Quelle langue utilisez-vous? – lmsasu
@Imsasu: WinForms est le nom non officiel des formulaires utilisés dans .NET. – Powerlord