Créer un formulaire plus grand que l'écran

Signaler
Messages postés
3
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
21 octobre 2015
-
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
-
Bonjour ou bonsoir - Win7 en VB.Net sous VisualExpress

Est-ce possible ?
Je souhaite créer un Form imaginons de 6000x4000 pixels
pour y représenter un réseau ferroviaire avec ses aiguillages et signalisations.

A l'exécution j'aimerais pouvoir me déplacer dans mon Form et éventuellement avoir une vue globale (donc réduite même non lisible) ou je pourrais cliquer pour passer en 'zoom 100' sur une partie du circuit.
Je ne sais comment aborder le problème ...

merci de votre aide
Robin

3 réponses

Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
Bonjour
pour pouvoir te déplacer dans la form, pour ton pc et d'autre pc avec différentes résolution d'ecran.
Utilise un Panel que tu dock :Fill et AutoScroll = True.

et la tu peux te deplacer dans la form.

pour le zoom, ton reseau ferroviaire et une image ou tu le créés à la main et comment ?
Messages postés
16112
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 juillet 2021
555
Bonjour, tu auras plus simple à faire ça en WPF qu'en winform.
Les contrôles étant vectoriels, l'application d'un zoom est aisée.


Sinon il existe des logiciels tout faits, pour faire des cartes ou plans, les Systèmes d'Information Géographique (SIG ou GIS en anglais). Il y a des gratuits pas ma.
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
salut

bon je t'ai trouvé une solution , mais ça marche sur une image.
sur une form mettre un panel1(orange) dock = haut, un panel2 (blanc) dock=fill, 2 bouton dans panel1, 1 picturebox dans panel2.
voir capture ecran:


et voici le code a mettre

 Public Class Form1

Dim TailleEcran As Boolean
Dim TailleRelle As Point

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
TailleEcran = False
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
TailleRelle = Me.PictureBox1.Size
End Sub

Private Sub ButtonTailleEcran_Click(sender As System.Object, e As System.EventArgs) Handles ButtonTaileEcran.Click
Me.PictureBox1.Size = New System.Drawing.Size(Me.Panel2.Size)
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
TailleEcran = True
Me.PictureBox1.Cursor = Cursors.Cross
End Sub


Private Sub ButtonTaille100Pourcent_Click(sender As System.Object, e As System.EventArgs) Handles ButtonTaille100pourcent.Click
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
TailleEcran = False
Me.PictureBox1.Cursor = Cursors.Default
End Sub


Private Sub Form1_SizeChanged(sender As System.Object, e As System.EventArgs) Handles MyBase.SizeChanged
If TailleEcran = True Then
Me.PictureBox1.Size = New System.Drawing.Size(Me.Panel2.Size)
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
End If
End Sub

Dim loc_x, loc_y As Integer
Dim estEnfonce As Boolean = False


Private Sub PictureBox1_doubleClick(sender As Object, e As System.EventArgs) Handles PictureBox1.DoubleClick
Dim TaillePicture As Point = Me.PictureBox1.Size
Dim coefx As Decimal = TaillePicture.X / TailleRelle.X
Dim coefy As Decimal = TaillePicture.y / TailleRelle.y

Me.PictureBox1.Size = New System.Drawing.Size(TailleRelle)
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
TailleEcran = False
Me.PictureBox1.Cursor = Cursors.Default
Dim x = (loc_x / coefx)
Dim y = (loc_y / coefy)

Panel2.AutoScrollPosition = New Point(x, y)
Panel2.Refresh()
End Sub

Private Sub PictureBox1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown

If e.Button = MouseButtons.Left Then
estEnfonce = True
loc_x = e.X
loc_y = e.Y
End If

End Sub

Private Sub PictureBox1_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If estEnfonce Then
Dim x = (loc_x - e.X) - Panel2.AutoScrollPosition.X
Dim y = (loc_y - e.Y) - Panel2.AutoScrollPosition.Y
Panel2.AutoScrollPosition = New Point(x, y)
Panel2.Refresh()
End If

End Sub

Private Sub PictureBox1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
If e.Button = MouseButtons.Left Then
estEnfonce = False
End If

End Sub
End Class


tiens nous au courant ....

Ps: Whismeril, mon clik n'est pas très precis sur les images de plus de 6000px et tu capables de le faire plus precis. merci