Visual Basic.NET - Lineas y Picturebox Visual.net

 
Vista:

Lineas y Picturebox Visual.net

Publicado por Gonzalo (1 intervención) el 17/09/2008 15:25:08
Caballeros, los pongo a prueba con un problema gigante que tengo en .net, en una aplicacion desktop.
Ya no se como tratar de hacer lo siguiente

necesito en un form, cargar una imagen, la cual puede ser redimensionada, por ende hay que ocupar un picturebox. Vamos bien hasta ahi?
el tema es el siguiente:

Sobre el picturebox, yo debo ser capaz de dibujar lineas desde cualquier vertice hasta un punto en especifico de la imagen cargada en el.
el problema, es que cuando dibujo sobre el picture, las lineas se me borran, y eso que estoy en el evento "Paint", lo he probado desde el form1_paint y desde el picturebox1_Paint, pero me borra las malditas lineas.
El problema es que el usuario puede tomar cualquiera de los extremos de las lineas y ajustar su tamaño y ubicacion (que para ello puse un boton en cada extremo), pero como les digo, se me pierden las lineas!!!!

Como saben, las lineas ya no existen en .net como objeto, asi que obligatoriamente debo dibujarlas por codigo. encontrè un objeto llamado powerpack, pero no me sirve para solucionar mi problema

Si alguien es capaz de ayudarme, estarè muy agradecido!!!

Espero entiendan mi problema.
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

PROGRAMAR BOTONES

Publicado por jose daniel (1 intervención) el 22/09/2008 23:08:01
NESECITO LA AYUDA DE USTEDES, NO SE COMO PROGRAMAR UN BOTON CON UNA IMAGEN , Y HACER QUE ME APAREZCA EN EL AREA DE TRABAJO LA IMAGEN QUE ESTA EN EL BOTON Y QUE DESPUES PUEDA MODIFICARLA(INGRESANDO DATOS EN LA IMAGEN).........(ALGO SIMILAR A LA APLICACION DE VISIO)
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

Lineas y Picturebox Visual.net

Publicado por Eduardo (1 intervención) el 21/04/2014 18:13:29
Intenta con este codigo Para Gonzalo

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
Private m_figActual As Figura
    Private m_figuras As New List(Of Figura)
 
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        CheckBox1.Text = "Dibujar figura"
        CheckBox1.Checked = False
 
        PictureBox1.BackColor = Color.WhiteSmoke
        PictureBox1.BorderStyle = BorderStyle.FixedSingle
    End Sub
 
    Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If (CheckBox1.Checked) Then
            PictureBox1.Cursor = Cursors.Cross
        Else
            PictureBox1.Cursor = Cursors.Default
        End If
 
        m_figActual = Nothing
 
    End Sub
 
    Private Sub PictureBox1_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox1.Click
        If Not CheckBox1.Checked Then Return
        If m_figActual Is Nothing Then
            m_figActual = New Figura()
        End If
 
        m_figActual.Puntos.Add(PictureBox1.PointToClient(Cursor.Position))
        PictureBox1.Refresh()
    End Sub
 
    Private Sub PictureBox1_DoubleClick(sender As System.Object, e As System.EventArgs) Handles PictureBox1.DoubleClick
        If Not CheckBox1.Checked Then Return
 
        If Not m_figActual Is Nothing Then
            m_figActual.Puntos.Add(PictureBox1.PointToClient(Cursor.Position))
 
            If m_figActual.Puntos.Count > 2 Then
                m_figuras.Add(m_figActual)
            End If
 
            m_figActual = Nothing
        End If
 
        PictureBox1.Refresh()
    End Sub
 
    Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        For Each fig As Figura In m_figuras
            fig.DibujaFigura(e.Graphics)
        Next
 
        If Not m_figActual Is Nothing Then
            m_figActual.DibujaTrazos(e.Graphics)
        End If
 
    End Sub
 
    Private Sub PictureBox1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        Label1.Text = PictureBox1.PointToClient(Cursor.Position).ToString()
    End Sub
End Class
 
Public Class Figura
 
    Private m_pts As New List(Of Point)
    Public Property Puntos() As List(Of Point)
        Get
            Return m_pts
        End Get
        Set(ByVal value As List(Of Point))
            m_pts = value
        End Set
    End Property
 
    Public Sub DibujaFigura(g As Graphics)
        g.DrawPolygon(Pens.Red, m_pts.ToArray())
    End Sub
 
    Public Sub DibujaTrazos(g As Graphics)
        If m_pts.Count < 2 Then Return
 
        g.DrawLines(Pens.Brown, m_pts.ToArray())
    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