Form in secondo piano ofuscata

martedì 05 gennaio 2010 - 17.30

phpbeta Profilo | Newbie

Salve,
Volevo dare un'effetto stile web 2.0 a un'applicazione WinForm che sto facendo in C# (.NET 3.5)

In pratica ho un form che per certe azioni richiede all'utente le credenziali di accesso e richiama un form di login in primo piano (ShowDialog() ).
Volevo sapere se fosse possibile o nel caso ci sia qualche libreria adatta a far si che il form in secondo piano (quello che richiama il login) si oscuri lasciando così il form di login in risalto.

L'effetto è grosso modo una cosa del genere
http://img98.imageshack.us/i/thickboxlogin.png/

Per intenderci qualcosa come l'effetto che c'è in WinXp quando si da il Chiudi Sessione e tutto il resto dietro diventa "grigio".

Ho provato ad esempio a cambiare l'Opacity del form principale, si vede in semitrasparenza il form in secondo piano mentre il form di login rimane "pieno" ma il colpo d'occhio non è quello che intendo.

Grazie in anticipo.

Saluti,
Lorenzo

dante4691 Profilo | Newbie

ciao, forse non e il metodo piu elegante ma potresti far disegnare sullo shermo un rettangolo grande quanto il form che richiama il login , dicolore nero o grigio in semi trasparenza. E' solo un pensiero ma secondo me puo funzionare, anche se ignoro l'esistenza di una funzione apposta.

phpbeta Profilo | Newbie

>ciao, forse non e il metodo piu elegante ma potresti far disegnare
>sullo shermo un rettangolo grande quanto il form che richiama
>il login , dicolore nero o grigio in semi trasparenza. E' solo
>un pensiero ma secondo me puo funzionare, anche se ignoro l'esistenza
>di una funzione apposta.

Ciao, anche a me era venuto in mente.
Il problema è che la proprietà Opacity il framework la mette a disposizione solo dei Form, nessun'altro controllo ne dispone.
Il backcolor ha un alpha da Color.FromRGB() che va da 0 a 255 ma non è una vera e propria trasparenza come l'Opacity, fa solo un gradiente sul colore di sfondo.

Ho fatto una prova veloce ed è fattibile utilizzare l'Opacity dei form creando un oggetto che in pratica è un form senza bordi configurabile.
Poi richiami l'oggetto nella Form che vuoi "oscurare", da lì imposti le misure tali e quali al Form ancorato in alto a sx e funziona.

E' un pò un accrocchio però se non ci sono altre possibilità può funzionare anche così.

Adesso non mi sono messo a completare tutto ma in linea teorica dovrebbe andare.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5