Visual Basic - GraphicsPath. Como crear una lista List(Of T)

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

GraphicsPath. Como crear una lista List(Of T)

Publicado por anonymous (2 intervenciones) el 16/03/2016 12:28:08
Buenos días,

Necesito hacer una lista del tipo List(Of T) con elementos GraphicsPath y no lo consigo. Estoy usando Visual Basic 2005.

Se trata de lo siguiente:
Voy a dibujar unos 350 tramos entre líneas y arcos y quiero poner cada uno de los tramos en un GraphicsPath (es decir, cada GraphicsPath tendrá una sola línea o arco) y una vez dibujado todo en la pantalla poder seleccionar cada una de las líneas o arcos mediante el ratón. Para poder saber cual es el tramo seleccionado con el ratón tengo que buscarlo en la List(Of T) mediante For each.

Ya tengo hecho el siguiente código en el que se dibujan 2 arcos y que al hacer click con el ratón en alguno de ellos me muestra un mensaje que indica cual es el arco seleccionar pero sería larguísimo hecerlo mediante este código para los aproximadamente 350 tramos a dibujar. Por eso creo que la mejor solución es mediante List(Of T). El código:
Imports System.Drawing.Drawing2D

Partial Public Class MainForm
Dim arco1 As GraphicsPath
Dim arco2 As GraphicsPath
Dim trazo As Pen

Public Sub New()
Me.InitializeComponent()
End Sub

Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
arco1 = New GraphicsPath()
arco2 = New GraphicsPath()
arco1.AddArc(10, 10, 200, 200, 0, 90)
arco2.AddArc(150, 150, 200, 200, 0, -90)
trazo = New Pen(Color.Red, 3)
End Sub

Private Sub MainForm_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
If IsNothing(arco1) Then Return
e.Graphics.SmoothingMode = SmoothingMode.HighQuality
e.Graphics.DrawPath(trazo, arco1)
e.Graphics.DrawPath(trazo, arco2)
End Sub

Private Sub MainForm_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
If IsNothing(arco1) Then Return
If arco1.IsOutlineVisible(e.Location, trazo) Then
MessageBox.Show("clic en arco1")
End If
If arco2.IsOutlineVisible(e.Location, trazo) Then
MessageBox.Show("clic en arco2")
End If
End Sub
End Class

Alguien sabe como?
Muchas gracias.
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

GraphicsPath. Como crear una lista List(Of T)

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 17/03/2016 03:33:40
Hola

Hacer una lista List(Of T), es muy simple.

Dim MyLista as new List(Of GraphicsPath)
Dim arco1 As GraphicsPath
arco1.AddArc(10, 10, 200, 200, 0, 90)

MyLista.Add(arco1)

Ya tienes la lista con un elemento.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

GraphicsPath. Como crear una lista List(Of T)

Publicado por anonymous (2 intervenciones) el 17/03/2016 09:42:43
Muchas gracias
Realmente creo que me estaba complicando mucho la vida pues he hecho muchísimas pruebas... y era muy fácil.
Saludos.
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