Visual Basic.NET - Ayuda con objeto rectangulo

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con objeto rectangulo

Publicado por alejandro (4 intervenciones) el 21/12/2020 16:24:46
Buenos dias, tengo un formulario en el cual tengo que recortar una imagen con un rectangulo, para seleccionar una parte especifica de una imagen si el usuario lo desea. el problema es que ya estoy intentando usar las propiedades: SendToBack() y BringToFront(), pero tanto mi picturebox no se va hacia atras y mi rectangulo no se va hacia enfrente del picturebox. Captura

espero puedan ayudarme con mi problema ya que no encuentro ninguna propiedad que me ayude a que se realice el cambio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 129
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con objeto rectangulo

Publicado por Jaime (50 intervenciones) el 24/12/2020 10:37:53
Como y donde pintas el rectangulo? Puedes poner el código?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con objeto rectangulo

Publicado por alejandro (4 intervenciones) el 24/12/2020 16:33:37
Lo inteto poner tanto en la propiedad paint del panel 1 como del picturebox, pero cuando lo pongo en el picturebox se mueve cuando muevo la imagen con el mouse, mi idea es dejarlo en un punto estatico, ira variando de tamaño dependiendo de la medida de foto que quiera el usuario, y si la imagen es muy grande el usuario tendra la opcion de seleccionar la zona interna del rectangulo, la cual sera la que se imprimira, es como cuando pones una foto de perfil pero debes de seleccionar un area para mostrar. Mi codigo es el siguiente:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Imports System.Data
Imports System.Data.OleDb
Public Class EditarImagen
    'variables para el movimiento de la imagen
    Dim Go As Boolean
    Dim leftSet As Boolean
    Dim TopSet As Boolean
    Dim Holdleft As Integer
    Dim holdTop As Integer
    Dim offleft As Integer
    Dim offTop As Integer
    'rectangulo
    Dim g As System.Drawing.Graphics
    Dim seleccion As Rectangle
    Dim down As Boolean
    Dim cuadrodialogo As New OpenFileDialog
    Dim mapaimagen As Bitmap
    Dim seleccioncolor As Color = Color.DarkBlue
    Dim borde As Integer = 2
    Dim largopictu As Integer = 300
    Dim anchopictu As Integer = 300
    Dim valor1, valor2 As Integer
    'variables para conexion a bd de listbox
    Private Sub EditarImagen_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
        seleccion = New Rectangle(New Point(200, 100), New Size(500, 700))
    End Sub
    Private Sub ButtonZoomMenos(sender As Object, e As EventArgs) Handles Button1.Click
        Button1.Text = "-"
        Me.PictureBox1.Width -= 20%
        Me.PictureBox1.Height -= 20%
    End Sub
    Private Sub ButtonZoomMas(sender As Object, e As EventArgs) Handles Button2.Click
        Button2.Text = "+"
        Me.PictureBox1.Width += 20%
        Me.PictureBox1.Height += 20%
    End Sub
    Public Sub CargarImagen(ByVal Imagen As String)
        Me.PictureBox1.ImageLocation = Imagen
        Me.Refresh()
    End Sub
    Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp
        Go = False
        leftSet = False
        TopSet = False
    End Sub
    Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown
        Go = True
    End Sub
    Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
        If Go = True Then
            Holdleft = (Control.MousePosition.X - Me.Left)
            holdTop = (Control.MousePosition.Y - Me.Left)
            If TopSet = False Then
                offTop = holdTop - sender.Top
                TopSet = True
            End If
            If leftSet = False Then
                offleft = Holdleft - sender.Left
                leftSet = True
            End If
            sender.Left = Holdleft - offleft
            sender.Top = holdTop - offTop
        End If
    End Sub
    Private Sub ScrollZoom(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseWheel
        Dim scale As New SizeF(1, 1)
        Dim scaleData As New SizeF(0.01, 0.01)
        scale.Width = 1
        scale.Height = 1
        If e.Delta > 0 Then
            scale += scaleData
        ElseIf e.Delta < 0 Then
            scale -= scaleData
        End If
        If e.Delta <> 0 Then
            PictureBox1.Scale(scale)
        End If
    End Sub
    Private Sub ButtonCancelar(sender As Object, e As EventArgs) Handles Button3.Click
        Me.Close()
    End Sub
    'rectangulo
    'se encarga de dar color al cuadro seleccionador
    Function cambiar(ByVal colour As Color, ByVal value As Integer) As Color
        Dim c As Color
        c = (Color.FromArgb((value), (colour)))
        Return (c)
    End Function
    Private Sub ButtonGuardar(sender As Object, e As EventArgs) Handles Button4.Click
        GuardarArchivoFD.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
        GuardarArchivoFD.FileName = "Save Image"
        GuardarArchivoFD.Filter = "JPEG|*.jpeg"
        If GuardarArchivoFD.ShowDialog() <> DialogResult.Cancel Then
            Dim savePath As String = GuardarArchivoFD.FileName
            Dim bmp As Bitmap = New Bitmap(PictureBox1.Image)
            bmp.Save(savePath, Imaging.ImageFormat.Jpeg)
        End If
    End Sub
    Private Sub ButtonRotar(sender As Object, e As EventArgs) Handles Button6.Click
        If PictureBox1.Image IsNot Nothing Then
            Dim bmp As Bitmap = New Bitmap(PictureBox1.Image)
            bmp.RotateFlip(RotateFlipType.Rotate90FlipNone)
            PictureBox1.Image = bmp
        Else
        End If
    End Sub
    Private Sub ButtonCortar(sender As Object, e As EventArgs) Handles Button5.Click
        'cortarimagen(mapaimagen).Save("C:\Users\alanr\Desktop\pruebas\resultado", Imaging.ImageFormat.Png)
        Dim cortado As Bitmap = New Bitmap(PictureBox1.Image)
        Dim cloneImage As Bitmap = cortado.Clone(seleccion, System.Drawing.Imaging.PixelFormat.DontCare)
        PictureBox1.Image = cloneImage
    End Sub
    Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
        e.Graphics.FillRectangle((New SolidBrush((cambiar((seleccioncolor), 100)))), seleccion)
        e.Graphics.DrawRectangle((New Pen((New SolidBrush((seleccioncolor))), borde)), seleccion)
        e.Graphics.DrawString(seleccion.Width & "x" & seleccion.Height, New Font("Arial", 10, FontStyle.Regular), Brushes.White, New Point(200, 100))
    End Sub
End Class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 129
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con objeto rectangulo

Publicado por Jaime (50 intervenciones) el 24/12/2020 22:05:49
Prueba pintándolo en el panel fuera del paint con el método creategraphics y después haz llamar a la espera de eventos
1
2
3
Panel1.createGraphics. FillRectangle((New SolidBrush((cambiar((seleccioncolor), 100)))), seleccion)
 
Application.doevents

Debería de pintarlo encima del picturebox
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar