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

Life is soft - evento anual de software empresarial
   
Vista:
Imágen de perfil de Josep

GraphicsPath. Como crear una lista List(Of T)

Publicado por Josep (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
información
Otras secciones de LWP con contenido de Visual Basic
- Código fuente de Visual Basic
- Cursos de Visual Basic
- Temas de Visual Basic
- Chat de Visual Basic
información
Códigos de Visual Basic
- Clase calculadora
- VB6-EmailHtml
- Marquesina
Imágen de perfil de Wilfredo Patricio Castillo

GraphicsPath. Como crear una lista List(Of T)

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
Imágen de perfil de Jose

GraphicsPath. Como crear una lista List(Of T)

Publicado por Jose (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