Je viens de me fendre d'un petit exemple/démo.
Fais un nouveau projet,
Mets-y, n'importe où sur un form (je les place à l'Activate) :
- 3 pictureboxes Picture1, Picture2 et Picture3
- un bouton de commande nommé allons_y
mets l'image que tu veux dans la picture2 (celle à insérer dans la picture1)
et ce code :
Private Sub Form_Activate()
' tout ce qui est ici n'est là que pour te "construire" un petit exemple
' tu n'as, toi, pas besoin de le faire par code. Il te suffit de déterminer tout cela
' en mode création
Me.ScaleMode = vbTwips
Me.Move 0, 0, Screen.Width, Screen.Height
With Picture1
.ScaleMode = vbPixels
.Move 0, 0, Screen.Width / 2, Screen.Height / 2
.AutoRedraw = True
.AutoSize = False
End With
With Picture2
.ScaleMode = vbPixels
.Move Screen.Width / 2 + 10, 0
.AutoRedraw = True
.AutoSize = True
End With
With Picture3
.ScaleMode = vbPixels
.Move 0, Picture1.Height + 5, Picture1.Width, Picture1.Height
'AutoSize = True
End With
With allons_y
.Move Me.Width / 2 + 20, Me.Height / 2 + 100, Me.Width / 2, Me.Height / 2
.Caption = "clique ici et regarde ce qui se passe"
.FontSize = 24
End With
End Sub
Private Sub allons_y_Click()
Dim la_picture1 As StdPicture, ou As Object, oux As Long, ouy As Long
Picture1.Picture = Picture1.Image
DoEvents
Set la_picture1 = Picture1.Picture
Set ou = Picture2.Container
oux = Picture2.Left
ouy = Picture2.Top
Set Picture2.Container = Picture1
Picture2.Move 20, 10
MsgBox "on a mis la petite dans la grande et on l'y a placée en 20,10 (simulation de ce que tu fais)"
Picture2.Visible = False ' on n'a même plus besoin de continuer à la voir
For i = 1 To 4
'j'ai fait exprès d'en mettre ainsi 4 et te forcer ainsi à ne pas te contenter de copier/coller
' tu vas te trouver forcé de réfléchir, d'analyser, de comprendre, puis d'adapter
Picture1.PaintPicture Picture2.Picture, Picture2.Left * i, Picture2.Top * i, Picture2.Width, Picture2.Height, 0, 0, Picture2.Width, Picture2.Height
Next
MsgBox "Tiens ===>> je t'en ai déssinées 4, à 4 endroits différents. Ce sont maintenant des parties du dessin et non des pictureboxes"
MsgBox "te reste plus qu'à sauvegarder l'image de picture1"
SavePicture Picture1.Image, "d:\toto.bmp" ' observe : propriété image et non picture
DoEvents
'preuve
Picture3.Picture = LoadPicture("d:\toto.bmp")
MsgBox "voilà ! c'est fait" & vbCrLf & "remettons tout à sa place (pas obligatoire ... juste pour fignoler)"
Picture1.Picture = la_picture1
Set Picture2.Container = ou
Picture2.Move oux, ouy
Picture2.Visible = True
End Sub
Pour ta première immersion dans le monde graphique de VB6, j'ai choisi de t'affranchir des calculs qu'imposent généralement des échelles différentes. Te voilà donc libéré de la necessité de calculs de transpositions par ScaleX, ScaleY, etc ....
J'ai pour ce faire forcé d'emblée les échelles graphiques de Picture1 et Picture2
Comme tu le constateras, cela n'en fait toutefois pas un code immédiatement compréhensible pour un néophyte. S'il est un domaine où la maîtrise est absolument nécessaire, c'est bien le domaine graphique. Il nécessite vraiment un apprentissage pas à pas.
Pour ton info : je me suis pourtant efforcé d'aller à la méthode la plus simple, de sorte à ce qu'elle ne te rebute pas d'emblée. Je n'utilise personnellement jamais de méthode similaire en matière de graphisme. Je vais directement à l'utilisation de certaines fonctions de la librairie GDI32 de l'Api de Windows. Mais on s'éloignerait-là des connaissances d'un débutant.
Bonne étude.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.