CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: patpite en Martes 9 de Noviembre de 2004, 18:08
Título: Pointf, Mschart
Publicado por: patpite en Martes 9 de Noviembre de 2004, 18:08
Hola a todos,
A ver si podéis echarme una manita con este problema, por favor. Tengo una tabla de datos (los datos los presento en un datagrid). Son pares de puntos (X,Y). Quiero representarlos gráficamente. Tengo entendido que con PointF y otras herramientas de GDI podría hacerlo. Por el momento, tengo este código, pero no me funciona:
//Código para dibujar la curva de puntos
// Creo el lápiz y el papel System.Drawing.Pen lapiz = new System.Drawing.Pen(Color.MediumOrchid); System.Drawing.Graphics papel = picGrafica.CreateGraphics();
//Array de puntos: inicializo el array metiendo un punto, pero no me gusta esto. PointF inicial = new PointF(0,0); PointF[] pts = {inicial};
foreach (DataRow dr in Andromeda.clases.comun.ds.Tables[Andromeda.clases.comun.TablaDatos].Rows) { // Si fila activa, q pinte el par (X,Y)=(Tensión,Corriente) bool valor = (bool)dr["Par activo"]; if(valor) { //Guardo cada punto (X,Y)=(V,I) en el array PointF pts double V = (double)dr["Tensión (V)"]; double I = (double)dr["Corriente (I)"]; // Convierto el tipo de los datos para poder guardarlos en pts float X = (float)V; float Y = (float)I; PointF punto = new PointF(X,Y);
// AQUI SALTA EXCEPCION: Conversion no válida!! Quiero guardar el punto en la matriz pts
pts[(int)dr["Identificador"]].Equals(punto);
}
// Bucle de prueba: dibujar curva uniendo puntos for(int i=1;i<pts.Length-1;i++) papel.DrawLine(lapiz,pts[(int)dr],pts[(int)dr[i+1]]); }
¿Alguien me podría decir cómo almacenar los Point que voy creando en la matriz PointF[] pts?
Otra pregunta: ¿es posible utilizar el MSChart para C#? En ese caso, ¿cómo hacerlo?
Mil gracias!
Título: Re: Pointf, Mschart
Publicado por: sergiotarrillo en Miércoles 10 de Noviembre de 2004, 11:30
asi seria en VB.Net:
Código: Text
Dim inicial = New PointF(0, 0)
Dim pts() As PointF = {inicial}
'numero de puntos
Dim nP As Integer
nP = 5
ReDim pts(nP)
For i As Integer = 0 To nP - 1
pts(i) = New PointF(x, y)
Next
y en C# seria asi:
Código: Text
PointF inicial = new PointF(0,0);
PointF[] pts = {inicial};
int nP;
nP = 5;
pts = new PointF[nP];
for ( int i=0; i<nP; i++)
pts[i] = new PointF(x,y);
si te sirvio....?
Título: Re: Pointf, Mschart
Publicado por: patpite en Miércoles 10 de Noviembre de 2004, 12:26
Gracias por la ayuda Serghio! :) Probaré a ver qué tal...