Copier une sélection à partir d'une PictureBox

csarlin Messages postés 4 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 25 février 2008 - 23 févr. 2008 à 18:22
csarlin Messages postés 4 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 25 février 2008 - 25 févr. 2008 à 13:55
Bonjour,

Voilà, je cherche à copier dans le presse-papier une sélection qui aurait été dessinée sur une PictureBox.

Pour résumer un peu :
- j'ai une feuille MDI parent sur laquelle j'ouvre une (ou plusieurs) feuilles MDI enfants, afin d'y faire, par la suite, des dessins (comme si j'étais dans photoshop par exemple)
- par un menu, j'ouvre une feuille que j'ai appelée "DialogPattern", et qui me permet d'afficher l'image de mon choix dans une PictureBox (appelée "PicturePattern").

Jusque là c'est simple...

- Lors de l'exécution, je dessine un rectangle de sélection sur l'image affichée dans PicturePattern.
- Ce que je cherche à faire, c'est une fois le rectangle de sélection dessiné, cliquer sur un bouton et que cela copie la sélection dans le presse-papier, afin de pouvoir ensuite la coller sur la picturebox de ma feuille MDI enfant active.

J'ai fais un premier test avec ça :
PrivateSub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
         'Copie l'image de PicturePattern dans le presse-papier (image complète)
         My.Computer.Clipboard.Clear() 

         My.Computer.Clipboard.SetImage(Me.PicturePattern.Image) 

         Me.Close()
EndSub

Je vois que la totalité de l'image affichée dans PicturePattern est copiée dans le presse-papier.
Par contre je ne sais pas comment faire pour ne copier que ce qui se trouve à l'intérieur de mon rectangle de sélection...

J'ai essayé :
Private
Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click

         'Copie la sélection de PicturePattern dans le presse-papier
         My.Computer.Clipboard.Clear() 

         My.Computer.Clipboard.SetImage(r)   'r m'a servi plus haut à créer le rectangle de sélection

         Me
.Close()
EndSub

Mais bien sûr ça ne marche pas... Il me renvoie comme erreur : "Une valeur de type 'System.Drawing.Rectangle' ne peut pas être convertie en 'System.Drawing.Image'.
Oui, évidemment, moi ce que je veux ce n'est pas le rectangle en lui-même, mais la partie de l'image qui apparaît à l'intérieur de ce rectangle...

Le pire c'est que c'est certainement tout con mais je précise que je suis ultra débutante...

Si quelqu'un veut bien m'éclairer de ses lumières...

Merci
Caroline

1 réponse

csarlin Messages postés 4 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 25 février 2008
25 févr. 2008 à 13:55
Hello,

Bon, j'ai trouvée la réponse toute seule

Si ça peut servir à quelqu'un, je fais comme ça :

Private
Sub OK_Button_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles OK_Button.Click

      Dim PB_Actif
As
New PictureBox

      'Copie la sélection dans la PictureBox de la feuille MDI active
      PB_Actif = FormMDI.ActiveMdiChild.Controls(
"PB_Image_3D")
      PB_Actif.Image = RecadreImage(PicturePattern.Image, IIf(Xend > Xstart, Xstart, Xend), IIf(Yend > Ystart, Ystart, Yend), Math.Abs(Xend - Xstart), Math.Abs(Yend - Ystart))

      Me.Close()

End
Sub

Et ça marche très bien !
Caroline
Rejoignez-nous