Zoom con rotellina

martedì 16 dicembre 2008 - 23.06

alexmed Profilo | Guru

Ciao a tutti
Qualcuno saprebbe dirmi come si fanno ad ingrandire e/o ridurre le dimensioni di un'immagine (inserita in una picturebox) per mezzo della rotellina del mouse.
Inoltre la PictureBox si trova all'interno di un Panel.

Grazie

luigidibiasi Profilo | Guru

Ciao,
puoi dare un'occhiata qui :

http://msdn.microsoft.com/it-it/library/system.windows.forms.control.mousewheel.aspx

Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

alexmed Profilo | Guru

Ciao
Purtroppo sono due giorni che ci giro attorno a MouseWheel e ad e.Delta ma non ne vengo a capo.

luigidibiasi Profilo | Guru

Che problema ti hai? ridimensionare o non ti attiva l'evento?
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

alexmed Profilo | Guru

A saperlo!!!

Inserendo questo

Private Sub Panel1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseWheel

Dim numberOfTextLinesToMove As Integer = e.Delta * SystemInformation.MouseWheelScrollLines / 120 ' WHEEL_DATA
Me.ToolStripStatusLabel1.Text = numberOfTextLinesToMove

End Sub

Come spiegato dalla guida, non succede nulla (e sono sicuro che c'è un motivo . Ma quale??)

alexmed Profilo | Guru

Aggiungo solo questa osservazione
Se la stessa cosa la scrivo all'interno di una Combo vedo il valore nella ToolStripStatusLabel1

Private Sub ComboBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ComboBox1.MouseWheel

Dim numberOfTextLinesToMove As Integer = e.Delta * SystemInformation.MouseWheelScrollLines / 120 ' WHEEL_DATA
Me.ToolStripStatusLabel1.Text = numberOfTextLinesToMove

End Sub

luigidibiasi Profilo | Guru

Nell'altro post ti hanno scritto un link ad un esempio di codice magari lì risolvi...
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

alexmed Profilo | Guru

Purtroppo non è in VB (precisazione che non ho fatto)

luigidibiasi Profilo | Guru

Non avendo VB sottomano mi butto hai provato a gestire il mousewheel della picturebox togliendola dal panel? giusto per avere un idea di come muoverci

correggo il post....

ho provato a inserire la picturebox nel panel e non gestisce il mousewheel mentre togliendo il panel lo gestisce.... cercando qua e là ho trovato questi link:

http://randompunter.com/post/2007/12/Making-a-scrollable-panel-scroll-with-the-mouse-wheel-just-by-hovering-over-it.htm
http://blogs.ugidotnet.org/franx_blog/archive/2008/09/14/94032.aspx



Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

alexmed Profilo | Guru

intendi una cosa del genere?

Private Sub PictureBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseWheel
Dim numberOfTextLinesToMove As Integer = e.Delta * SystemInformation.MouseWheelScrollLines / 120 ' WHEEL_DATA
Me.ToolStripStatusLabel1.Text = numberOfTextLinesToMove
End Sub

Non succede nulla.
Da quello che ho capito però il MouseWheel dovrebbero gestirlo solo i controlli che hanno l'AutoScroll. Oppure no?

luigidibiasi Profilo | Guru

Su msdn si parla di controlli che hanno lo stato attivo quindi controlli che possono avere il focus.. non vorrei che la picturebox non possa averlo

cercando in giro comunque ho notato che mousewheel crea molti problemi

mha è tardi ... nel caso resti qui buona notte
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

alexmed Profilo | Guru

Grazie
Rimando anch'io a domani
Ciao

alexmed Profilo | Guru

Ciao
il lume si accese!!!!


Dim numberOfTextLinesToMove As Integer = e.Delta * SystemInformation.MouseWheelScrollLines / 120 ' WHEEL_DATA
Me.ToolStripStatusLabel1.Text = numberOfTextLinesToMove

If numberOfTextLinesToMove <= 0 Then
Me.PictureBox1.Width /= Math.Abs(numberOfTextLinesToMove)
Me.PictureBox1.Height /= Math.Abs(numberOfTextLinesToMove)
Me.TextBox1.Text = numberOfTextLinesToMove
Else
Me.PictureBox1.Width *= Math.Abs(numberOfTextLinesToMove)
Me.PictureBox1.Height *= Math.Abs(numberOfTextLinesToMove)
End If

Basta mettere all'interno del Panel anche un controllo che accetta il Focus (una TextBox) ed il gioco è fatto!!!!
Se poi alla TextBox gli dai Width = 0 la metti in ReadOnly e come Location = 0,0 nessuno si accorge che c'è!!!
Ciao e grazie
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5