E' possibile creare delle form personalizzate che funzionino, tanto per fare un esempio, come windows media player o ITunes (senza barra in alto e contorno ma con bordo personalizzato e rotondo)?
E' possibile creare delle form personalizzate che funzionino, tanto per fare un esempio, come windows media player o ITunes (senza barra in alto e contorno ma con bordo personalizzato e rotondo)?
PAZZIA PAZZIA
PORTAMI VIA!
beh prova, tanto non dovresti scrivere codice; metti una immagine, togli il bordo e la barra al form, imposti al form il colore trasparente, e vedi cosa viene![]()
Il problema è che devi gestire gli eventi del form sull'immagine, quindi ridurre ad icona, ingrandire, chiudere, il mousemove per spostare il tuo nuovo form, il resize, e altre cosette. Con vb6 questa era la parte difficile, poichè dovevi anche procedere al subclassing sul form per la gestione degli eventi di windows diretti al form, che pero' essendo inutilizzabile devono essere gestiti in maniera differente. Con vb.net questa parte non ho idea se è necessaria (credo cmq di si), anche se il subclassing è semplice, basta selezionare dal form Overrides e quindi la WndProc, avrai:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
........
End Sub
Ans.
Per la grafica tutto ok, ho tolto barra e bordo alla form e aggiunto due immagini una sopra e una sotto che mi fanno da cornice (hanno gli angoli smussati e sto ancora lavorando su come fare la trasparenza).
Per quanto riguarda la gestione degli eventi, a me servirebbe solo che quando si clicca sull'immagine in alto e si trascina il mouse, la finestra si sposta.
Sto provando ma non esiste un evento tipo 'drag' per la picture... qualche idea?
PAZZIA PAZZIA
PORTAMI VIA!
codice:Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown myFormDragging = True myPointClicked = New Point(e.X, e.Y) End Sub Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp myFormDragging = False End Sub Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove If myFormDragging Then Dim aMoveToPoint As Point aMoveToPoint = Me.PointToScreen(New Point(e.X, e.Y)) ' ' Adjust the position based on where you started. ' aMoveToPoint.Offset(myPointClicked.X * -1, _ (myPointClicked.Y + SystemInformation.CaptionHeight + _ SystemInformation.BorderSize.Height) * -1) ' ' Move the form. ' Me.Location = aMoveToPoint End If End Sub
PAZZIA PAZZIA
PORTAMI VIA!