bonjour,
l'idée est de permettre à un utilisateur
1) de choisir une image dans sa bibliothèque et de l'afficher dans un picturebox
2) de choisir une partie de l'image avec son curseur
3) de lui indiquer la partie sélectionnée avec un rectangle en pointillé.
4) de cloner cette partie sélectionnée et de la mettre dans un deuxième picturebox pour sauvegarde
après près de trois semaines de test , recherche et essai j'arrive a résoudre les trois premières parties.
mais la quatrième donne une image complétement décalée par rapport au cadre sélectionné.
et la je sèche lamentablement.
si quelqu'un peut me donner une explication, elle sera la bienvenue.
voila le code en cause:
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Private Sub PictureBox2_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseDown souris_deb_X = e.X souris_deb_y = e.Y PictureBox2.Refresh() End Sub Private Sub PictureBox2_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseUp souris_fin_X = e.X souris_fin_Y = e.Y If souris_fin_X - souris_deb_X = 0 Then Exit Sub Dim newImage = New Bitmap(PictureBox2.Image) ' entourer la partie selectionnee par user Dim g As Graphics = PictureBox2.CreateGraphics() Dim RecCoul As Pen = New Pen(Color.Blue, 2) Dim Rectsource As New Rectangle(souris_deb_X, souris_deb_y, souris_fin_X - souris_deb_X, souris_fin_Y - souris_deb_y) RecCoul.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot g.DrawRectangle(RecCoul, Rectsource) Dim RectsourceNEW As New Rectangle(souris_deb_X, souris_deb_y, PictureBox1.Width, PictureBox1.Height) 'rectangle apparait comme demandé par user ' Clone de la partie correspondant au rectangle Dim NewImage2 = newImage.Clone(RectsourceNEW, newImage.PixelFormat) newImage.Dispose() Dim FicSor = Application.StartupPath & "\Temp1.jpg" PictureBox1.Image = NewImage2 PictureBox1.Image.Save(FicSor) PictureBox1.SizeMode = PictureBoxSizeMode.Zoom PictureBox1.Visible = True End Sub
Partager