[align=justify]Salve a tutti ragazzi, dopo la mia richiesta di aiuto su come cambiare forma ad un form o modificarlo, devo dire che che Predator mi ha aperto gli occhi spiegandomi alcune cose basilari che io non ne ero a conoscenza.. quindo lo ringrazio in quanto grazie alle sue delucidazioni sono riuscito a trovare la guida. Guida che io posterò per tutti coloro, che come me alle prime armi vorrebbero cambiare il form ma non sanno minimamente come fare. Allora senza troppe ciance iniziamo la spiegazione.
1-Per creare un form con forma personalizzata creeremo una immagine bitmap o jpeg o ancora meglio in png di forma non rettangolare.
2-Impostare un colore facile da ricordare nel Back Color nelle proprietàdel form quindi magari (White) poichè successivamente lo dovremo rendere trasparente o per dirla tutta invisibile.
3-Impostare la proprietàFormBorderStyle su None.
Viene rimossa la barra del titolo dal form. Vengono anche rimosse le funzionalitàfornite dalla barra del titolo, come la possibilitàdi chiudere e di spostare il form. Questo problema verràrisolto nel codice in un secondo momento.
4-Impostare la proprietàBackgroundImage del form sul file bitmap creato in precedenza. Non occorre aggiungere il file al sistema del progetto, poiché questa operazione è automatica quando si specifica il file come immagine di sfondo.
5-Impostare la proprietàTransparencyKey sul colore di sfondo del file bitmap.
Con questa proprietàsi segnala all'applicazione quali parti del form saranno trasparenti.
Nota: Èpossibile che sui monitor impostati con un'intensitàcolore superiore a 24 bit si presentino problemi di visualizzazione, con la conseguenza che determinate parti del form non appaiano trasparenti nonostante l'impostazione della proprietàTransparencyKey. Per evitare questo problema, accertarsi che l'intensitàcolore del monitor sia impostata su un valore inferiore a 24 bit nel pannello di controllo Schermo. Nello sviluppo di applicazioni che prevedono l'applicazione della trasparenza, è opportuno informare gli utenti in merito a questo inconveniente.
Piccolo difetto che potrebbe capitare ma che posso sottilineare che a me mi da solo una striscietta bianca intorno al formr ma che nemmeno si vede.
6-Scrivere il codice per chiudere il form: Aggiungere un controllo Button al form e aggiungere codice per consentire all'utente di chiudere il form richiamando il metodo Close
7-Codice per spostare il form: Creare una routine per spostare il form quando lo si trascina. Immettere codice simile a quello riportato di seguito per creare un nuovo oggetto Point. Questo codice avràla funzione di una variabile quando si calcola come spostare il form. Il campo isMouseDown viene utilizzato per tenere traccia della pressione del pulsante del mouse. Il form verràspostato solo mentre si tiene premuto il pulsante del mouse.
8-Creare un gestore eventi per l'evento MouseDown del form. Aggiungere al gestore il codice per consentire a un utente di fare clic in un punto qualsiasi del form per trascinarlo. Per informazioni dettagliate sulla creazione di gestori eventi, vedere Creazione di gestori di eventi in Progettazione Windows Form.
Immettere codice simile a quello riportato di seguito per assegnare coordinate alla variabile mouseOffset sulla base della posizione corrente del puntatore del mouse. Nel codice che segue la posizione di offset viene calcolata mediante le informazioni di sistema relative alle dimensioni del bordo (FrameBorderSize.Width) e all'altezza della barra del titolo (CaptionHeight). Ènecessario tenere conto di tali informazioni quando si esegue il test dell'offset, poiché alcune misurazioni vengono effettuate con l'area client, altre con le coordinate dello schermo. L'offset pertanto equivale allo spessore del bordo più l'altezza della didascalia più l'offset nell'area client del form.
9-Creare un gestore eventi per l'evento MouseMove del form.
Immettere codice simile a quello riportato di seguito. Quando si fa clic sul pulsante sinistro e si trascina il mouse, la proprietàLocation del form viene impostata sulla nuova posizione.
[/align]
10-Creare un gestore eventi per l'evento MouseUp del form. Immettere codice simile a quello riportato di seguito.
Vi allego inoltre una prova che ho fatto io.. ecco il sorgente.. spero che la guida sia molto chiara in caso questo è il link originario buona programmazione amici miei!!
1-Per creare un form con forma personalizzata creeremo una immagine bitmap o jpeg o ancora meglio in png di forma non rettangolare.
2-Impostare un colore facile da ricordare nel Back Color nelle proprietàdel form quindi magari (White) poichè successivamente lo dovremo rendere trasparente o per dirla tutta invisibile.
3-Impostare la proprietàFormBorderStyle su None.
Viene rimossa la barra del titolo dal form. Vengono anche rimosse le funzionalitàfornite dalla barra del titolo, come la possibilitàdi chiudere e di spostare il form. Questo problema verràrisolto nel codice in un secondo momento.
4-Impostare la proprietàBackgroundImage del form sul file bitmap creato in precedenza. Non occorre aggiungere il file al sistema del progetto, poiché questa operazione è automatica quando si specifica il file come immagine di sfondo.
5-Impostare la proprietàTransparencyKey sul colore di sfondo del file bitmap.
Con questa proprietàsi segnala all'applicazione quali parti del form saranno trasparenti.
Nota: Èpossibile che sui monitor impostati con un'intensitàcolore superiore a 24 bit si presentino problemi di visualizzazione, con la conseguenza che determinate parti del form non appaiano trasparenti nonostante l'impostazione della proprietàTransparencyKey. Per evitare questo problema, accertarsi che l'intensitàcolore del monitor sia impostata su un valore inferiore a 24 bit nel pannello di controllo Schermo. Nello sviluppo di applicazioni che prevedono l'applicazione della trasparenza, è opportuno informare gli utenti in merito a questo inconveniente.
Piccolo difetto che potrebbe capitare ma che posso sottilineare che a me mi da solo una striscietta bianca intorno al formr ma che nemmeno si vede.
6-Scrivere il codice per chiudere il form: Aggiungere un controllo Button al form e aggiungere codice per consentire all'utente di chiudere il form richiamando il metodo Close
Codice:
Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
7-Codice per spostare il form: Creare una routine per spostare il form quando lo si trascina. Immettere codice simile a quello riportato di seguito per creare un nuovo oggetto Point. Questo codice avràla funzione di una variabile quando si calcola come spostare il form. Il campo isMouseDown viene utilizzato per tenere traccia della pressione del pulsante del mouse. Il form verràspostato solo mentre si tiene premuto il pulsante del mouse.
Codice:
Visual Basic
Private mouseOffset As Point
Private isMouseDown As Boolean = False
8-Creare un gestore eventi per l'evento MouseDown del form. Aggiungere al gestore il codice per consentire a un utente di fare clic in un punto qualsiasi del form per trascinarlo. Per informazioni dettagliate sulla creazione di gestori eventi, vedere Creazione di gestori di eventi in Progettazione Windows Form.
Immettere codice simile a quello riportato di seguito per assegnare coordinate alla variabile mouseOffset sulla base della posizione corrente del puntatore del mouse. Nel codice che segue la posizione di offset viene calcolata mediante le informazioni di sistema relative alle dimensioni del bordo (FrameBorderSize.Width) e all'altezza della barra del titolo (CaptionHeight). Ènecessario tenere conto di tali informazioni quando si esegue il test dell'offset, poiché alcune misurazioni vengono effettuate con l'area client, altre con le coordinate dello schermo. L'offset pertanto equivale allo spessore del bordo più l'altezza della didascalia più l'offset nell'area client del form.
Codice:
Visual Basic
Private Sub Form1_MouseDown(ByVal sender As Object, _
ByVal e As MouseEventArgs) Handles MyBase.MouseDown
Dim xOffset As Integer
Dim yOffset As Integer
If e.Button = MouseButtons.Left Then
xOffset = -e.X - SystemInformation.FrameBorderSize.Width
yOffset = -e.Y - SystemInformation.CaptionHeight - _
SystemInformation.FrameBorderSize.Height
mouseOffset = New Point(xOffset, yOffset)
isMouseDown = True
End If
End Sub
9-Creare un gestore eventi per l'evento MouseMove del form.
Immettere codice simile a quello riportato di seguito. Quando si fa clic sul pulsante sinistro e si trascina il mouse, la proprietàLocation del form viene impostata sulla nuova posizione.
Codice:
Visual Basic
Private Sub Form1_MouseMove(ByVal sender As Object, _
ByVal e As MouseEventArgs) Handles MyBase.MouseMove
If isMouseDown Then
Dim mousePos As Point = Control.MousePosition
mousePos.Offset(mouseOffset.X, mouseOffset.Y)
Location = mousePos
End If
End Sub
10-Creare un gestore eventi per l'evento MouseUp del form. Immettere codice simile a quello riportato di seguito.
Codice:
Visual Basic
Private Sub Form1_MouseUp(ByVal sender As Object, _
ByVal e As MouseEventArgs) Handles MyBase.MouseUp
' 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 Then
isMouseDown = False
End If
End Sub
Vi allego inoltre una prova che ho fatto io.. ecco il sorgente.. spero che la guida sia molto chiara in caso questo è il link originario buona programmazione amici miei!!