Besoin d'aide VB 6.0 pour écrire dans une picture box

Résolu
beurrier Messages postés 5 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 22 mai 2011 - 17 mai 2011 à 16:20
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 22 mai 2011 à 16:20
Bonjour à tous
Pour un projet, je dois faire différents dessins avec des lignes et des cercles dans une pîcturebox suivant ce que l'utilisateur veut.
Mais je voudrais aussi afficher une légende (une dizaine de caractère sachant qu'il y a 8 dessin à peu près sur l'écran en dessous du dessin mais je trouve pas comment faire.
Dernier petit point, je trace donc 8 dessin sur la page mais je dois en réalité en tracer 16 mais je n'arrive pas à faire une grande picture box que je pourrais visualiser complètement avec une barre de défilement(comme sur une page internet).

Merci par avance à ceux qui prendront le temps d'aider un mec qui a commencé VB y'a 2 mois !!!

Beurrier

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2011 à 17:27
Bonjour,
Deux mois, c'est déjà beaucoup
Regarde ce que fait ceci (baclé) dans une picturebox avec son scalemode en pixels
Private Sub Command1_Click()
  Picture1.CurrentX = 30
  Picture1.CurrentY = 70
  Picture1.FontName = "Arial"
  Picture1.FontSize = 14
  Picture1.Print "coucou"
End Sub

et déduis-en tout le reste (couleur, etc...)
Pour ce qui est de ton déroulement, le plus simple pour toi est de mettre ta grande picturebox dans un autre container (une autre picturebox, par exemple) aux dimensions que tu veux (plus petite, donc).
Te reste à ajouter deux scrollbars (une verticale et l'autre horizontale) dans le "container" ou ailleurs sur ton form pour modifier les propriétés top et left de la picture1
A toi de jouer, tu en sais assez, maintenant.
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2011 à 17:29
et n'oublie pas de regarder (va t'être utile)
- la propriété AutoRedraw d'une PictureBox
- la propriété Image d'une Picture
(ouvre ton aide en ligne)

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 mai 2011 à 18:16
Bon

voilà donc un exemple vite fait
J'y traite le déroulement vertical
Analyse et fais de même pour le déroulement horizontal (facile, non ?)

Un projet nouveau
sur Form1 : un Frame Frame1, une PictureBox Picture1 et une VScroll VScroll1, place-les où tu veux.
Le début de mon code n'est là que pour les placer là où il faut. Sur ton vrai projet, fais ces placements à la main, en mode création.

Choisis une très grande image (variable mon image)

Exécute et vois
Private Sub Form_Initialize()
  'tout ceci n'est là que pour placer les choses là où il faut
  'A toi de le faire directement, en mode création (en les plaçant toi-même)
  With Picture1
    Set Picture1.Container = Frame1
    DoEvents
    .ScaleMode = vbPixels
    .AutoSize = True
    .Top = 0
    .Left = 0
  End With

  With Me
    .ScaleMode = vbPixels
    .Move 0, 0, 18000, 18000
  End With


  With Frame1
    .Top = 0
    .Left = 0
    .Width = 200
    .Height = 200
  End With
  monimage = "D:\toto.bmp"
  Picture1.Picture = LoadPicture(monimage)
  With VScroll1
    .Move Frame1.Left + Frame1.Width, Frame1.Top, 20, Frame1.Height
  End With
  
  '================
  'et ce qui vient, par contre, est à mettre en code
  ' car dépendant de ton image
  VScroll1.Value = 0
  VScroll1.Max = Picture1.Height - (Frame1.Height * Screen.TwipsPerPixelY)
  
End Sub



Private Sub VScroll1_Change()
  Picture1.Top = -VScroll1.Value
End Sub

Private Sub VScroll1_Scroll()
  VScroll1_Change
End Sub


Je n'ai pas voulu tout te faire (ce n'est pas mon genre).
A toi donc de te prendre un peu la tête entre les mains et de perfectionner, en ne montrant les scrollbars que si une ou les deux dimensions de ton image sont plus grandes que Frame1 (fastoche)
Bon week-end

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 mai 2011 à 21:56
re
bon ... tu n'es apparemment plus là et tu as bien raison (il faut profiter des week-ends)
MLais moi, je suis vieux et, tu sais, les week-ends ou pas, c'est pareil maintenant
Je t'ai montré comment le faire avec un ascenseur.
Et sans ascenseur ?
Voilà de quoi y parvenir. Pour "dérouler" : on maintient le bouton droit de la souris pressé et on "déroule" dans tous les sens souhaités.
Un Form, une picturebox Picture1 et un Frame Frame1 ('plus d'ascenseur)
on y va ?
Dim dejax As Integer
Dim dejay As Integer
Dim encours As Boolean
Private Sub Form_Initialize()
  'tout ceci n'est là que pour placer les choses là où il faut
  'A toi de le faire directement, en mode création (en les plaçant toi-même)
  With Picture1
    Set Picture1.Container = Frame1
    DoEvents
    .ScaleMode = vbPixels
    .AutoSize = True
    .Top = 0
    .Left = 0
  End With

  With Me
    .ScaleMode = vbPixels
    .Move 0, 0, 18000, 18000
  End With
  With Frame1
    .Top = 0
    .Left = 0
    .Caption = ""
    .Width = 200
    .Height = 200
    .BorderStyle = 0
  End With
  '================
  'et ce qui vient, par contre, est à mettre en code
  ' car dépendant de ton image
  monimage = "D:\toto.bmp"
  Picture1.Picture = LoadPicture(monimage)
  
  End Sub
  
 

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button <> 2 Then Exit Sub
  dejax = X
  dejay = Y
  encours = True
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If encours And Button = 2 Then
    Dim toto As Long
    toto = Picture1.Left + (X - dejax)
    If toto < Frame1.Width And (Picture1.Width + toto) > Frame1.Width * Screen.TwipsPerPixelX Then
      Picture1.Left = toto
    End If
    toto = Picture1.Top + (Y - dejay)
    If toto < Frame1.Height And (Picture1.Height + toto) > Frame1.Height * Screen.TwipsPerPixelY Then
      Picture1.Top = Picture1.Top + (Y - dejay)
    End If
  End If
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  encours = False
End Sub

Voilà ! Cela te fera deux codes à tester et analyser Lundi







____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
beurrier Messages postés 5 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 22 mai 2011
17 mai 2011 à 22:27
Merci à toi je vais essayer tout çà !!
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
18 mai 2011 à 11:11
Bonjour,

Pour le scroll et si tu es bien en VB6, regardes aussi le contrôle DataRepeater.

Attention, vérifie s'il peut marcher si tes contrôles contenues ne sont pas dépendant de données.


Calade
0
beurrier Messages postés 5 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 22 mai 2011
21 mai 2011 à 16:27
Bonjour à tous
J'ai réussi à tout faire sauf la scrollbar j'ai réussi à mettre ma picture box dans une autre et j'installe les scrollbar mais impossible de les programmer pour qu'elle fasse monter et descendre mon image.
Merci de votre aide
Beurrier
0
beurrier Messages postés 5 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 22 mai 2011
22 mai 2011 à 11:48
merci à vous deux je vais tester çà tout de suite
0
beurrier Messages postés 5 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 22 mai 2011
22 mai 2011 à 12:07
Merci à toi en fait je n'avais pas vu que c'était la même personne excuse moi.
J'y suis arrivé mais par contre il me reste un problème ma picture box n'est pas assez grande.
J'arrive à la faire bouger mais elle n'est pas assez grande en bas pour rentrer tout ce que j'ai à afficher. Est ce que je suis au maximum de l'affichage parce que mon autosize est sur true.
Sinon est ce que c'est possible que ma scroll fasse changer mes paramètres suivant si on l'a descend ou on la remonte ?

Beurrier
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 mai 2011 à 16:20
Je ne comprends pas où se situe le problème.
Dès lors que la propriété Autosize est à True, les dimensions de ta picturebox sont les dimensions réelles de ton image. Les "scrolls" ne changent et ne sauraient changer en aucune manière ces dimensions.
Que veux-tu dire exactement ?
- S'agit-il d'une impossibilité rencontrée (m'étonnerait un peu ... Quelles sont les dimensions de l'image qui pose problème ?) d'arriver à l'affichage, par déroulement, de telle ou telle autre partie de ton image ?
- s'agit-il d'un souhait de modifier la taille de ton image pour y ajouter une zone (en précisant où) ? (et ce serait là une autre discussion à ouvrir)
>> précise ce point.


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Rejoignez-nous