Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question#Region "Aperçu recadrage" Private Sub btnrogner_Click(sender As System.Object, e As System.EventArgs) Handles btnrogner.Click If pic.Image Is Nothing Then Exit Sub Dim r As RectangleF = RegionToPixels() Dim bm As New Bitmap(CInt(r.Width), CInt(r.Height), pic.Image.PixelFormat) Dim rDest As New RectangleF(0, 0, r.Width, r.Height) Dim g As Graphics = Graphics.FromImage(bm) g.DrawImage(pic.Image, rDest, r, GraphicsUnit.Pixel) g.Dispose() Result.picresult.Image = bm Result.picresult.Width = CInt(r.Width) Result.picresult.Height = CInt(r.Height) Result.Width = CInt(r.Width) Result.Height = CInt(r.Height) Result.ShowDialog() bm.Dispose() End Sub #End Region
PreviewPictureBox.SizeMode = PictureBoxSizeMode.Zoom
Imports System.Drawing.Drawing2D
Public Class Form1
Dim Yend As Integer
Dim Xend As Integer
Dim Ystart As Integer
Dim Xstart As Integer
Dim cropWidth As Integer
Dim cropHeight As Integer
Dim cropBitmap As Bitmap
Public cropPen As Pen
Public cropPenSize As Integer = 1 'epaisseur du trait de cadre
Public cropDashStyle As Drawing2D.DashStyle = Drawing2D.DashStyle.Solid ' spefie une ligne continue
Public cropPenColor As Color = Color.Yellow 'specifie la couleur du trait
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
PictureBox2.SizeMode = PictureBoxSizeMode.Normal
PictureBox2.Visible = False
Dim nomfich As String = "D:\Capture.jpg" ' fichier image à charger
PictureBox1.Image = Image.FromFile(nomfich)
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If PictureBox1.Image Is Nothing Then Exit Sub
If e.Button = MouseButtons.Left Then
PictureBox1.Refresh()
PictureBox2.Visible = False
Xstart = e.X
Ystart = e.Y
End If
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If PictureBox1.Image Is Nothing Then Exit Sub
If e.Button = MouseButtons.Left Then
PictureBox1.Refresh()
Yend = e.Y
Xend = e.X
cropWidth = Math.Abs(e.X - Xstart)
cropHeight = Math.Abs(e.Y - Ystart)
cropPen = New Pen(cropPenColor, cropPenSize)
'On efface l'ancien rectangle
Dim rect As Rectangle
ControlPaint.DrawReversibleFrame(rect, Me.BackColor, FrameStyle.Thick)
rect = PictureBox1.RectangleToScreen(New Rectangle(Xstart, Ystart, Xend - Xstart, Yend - Ystart))
PictureBox1.CreateGraphics.DrawRectangle(cropPen, Xstart, Ystart, cropWidth, cropHeight)
End If
End Sub
Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
If PictureBox1.Image Is Nothing Then Exit Sub
If cropHeight = 0 Or cropWidth = 0 Then Exit Sub
PictureBox1.CreateGraphics.DrawRectangle(cropPen, Xstart, Ystart, cropWidth, cropHeight)
Dim rect As Rectangle = New Rectangle(Xstart, Ystart, Xend - Xstart, Yend - Ystart)
' positions x, y et dimensions largeur, hauteur du rectangle rogné dans la PictureBox1
Dim bit As Bitmap = New Bitmap(PictureBox1.Image, PictureBox1.Width, PictureBox1.Height)
Dim CropImage = New Bitmap(cropWidth, cropHeight) 'dimension du bitmap
Dim g As Graphics = Graphics.FromImage(CropImage)
g.InterpolationMode = InterpolationMode.HighQualityBicubic
g.PixelOffsetMode = PixelOffsetMode.HighQuality
g.CompositingQuality = CompositingQuality.HighQuality
g.DrawImage(bit, 0, 0, rect, GraphicsUnit.Pixel)
PictureBox2.Height = rect.Height
PictureBox2.Width = rect.Width
PictureBox2.Image = CropImage 'affichage dans la PictureBox2 aux dimensions du rectangle rogné
PictureBox2.Visible = True
End Sub
End Class
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load PictureBox2.SizeMode = PictureBoxSizeMode.StretchImage PictureBox2.Visible = False Dim nomfich As String = "C:\chemin image.jpg" ' fichier image à charger PictureBox1.Image = Image.FromFile(nomfich) PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize Me.Width = PictureBox1.Width Me.Height = PictureBox1.Height End Sub