grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1) 'Esta línea del programa es la encargada de poner los puntos, a partir de los cuales se podrá visualizar la gráfica de las funciones. Como ya se obtuvo el valor de coordenadaadaptadax y el valor de coordenadaadaptaday, se ponen esas coordenadas como un puntito, pues los parámetros que se le dan de 1, 1; significan que de ancho y alto se le de 1 pixel para que quede un puntito, pues en realidad se está utilizando la herramienta de dibujar una elipse.
Next
Else
MsgBox("Introduzca una función válida.", MsgBoxStyle.OkOnly, "No se ha generado el Assembly") 'Esto es en el caso que la función introducida por el usuario no sea reconocida como función matemática, por ejemplo si el usuario escribe disparates.
grafico.Clear(Color.Black) 'Si no se ha reconocido como función matemática la función introducida por el usuario, entonces pone negro todo el PictureBox.
End If
End Sub
Private Sub disminuirzoom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles disminuirzoom.Click
textboxxminimo.Text = Val(Int(textboxxminimo.Text) – 1) 'Si el usuario había puesto -5 en xminimo, se cambia a -6. Con eso hay más escalas y se logra alejar una imagen de la gráfica o disminuir zoom.
textboxxmaximo.Text = Val(Int(textboxxmaximo.Text) + 1) 'Si el usuario había puesto 5 en xmaximo, se cambia a 6. Con eso hay más escalas y se logra alejar una imagen de la gráfica o disminuir zoom.
textboxyminimo.Text = Val(Int(textboxyminimo.Text) – 1) 'Si el usuario había puesto -5 en yminimo, se cambia a -6. Con eso hay más escalas y se logra alejar una imagen de la gráfica o disminuir zoom.
textboxymaximo.Text = Val(Int(textboxymaximo.Text) + 1) 'Si el usuario había puesto 5 en ymaximo, se cambia a 6. Con eso hay más escalas y se logra alejar una imagen de la gráfica o disminuir zoom.
graficar_Click(sender, e) 'Se está llamando al procedimiento del botón Graficar. Con eso hay más escalas y se logra acercar la imagen de la gráfica o disminuir zoom.
End Sub
Private Sub aumentarzoom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles aumentarzoom.Click
textboxxminimo.Text = Val(Int(textboxxminimo.Text) + 1) 'Si el usuario había puesto -5 en xminimo, se cambia a -4. Con eso hay menos escalas y se logra acercar una imagen de la gráfica o aumentar zoom.
textboxxmaximo.Text = Val(Int(textboxxmaximo.Text) – 1) 'Si el usuario había puesto 5 en xmaximo, se lo cambia a 4. Con eso hay menos escalas y se logra acercar una imagen de la gráfica o aumentar zoom.
textboxyminimo.Text = Val(Int(textboxyminimo.Text) + 1) 'Si el usuario había puesto -5 en yminimo, se cambia a -4. Con eso hay menos escalas y se logra acercar una imagen de la gráfica o aumentar zoom.
textboxymaximo.Text = Val(Int(textboxymaximo.Text) – 1) 'Si el usuario había puesto 5 en ymaximo, se cambia a 4. Con eso hay menos escalas y se logra acercar una imagen de la gráfica o aumentar zoom.
graficar_Click(sender, e) 'Se está llamando al método o procedimiento completo del botón graficar, pues luego de haber cambiado las escalas se tiene que generar nuevamente la gráfica con las escalas aumentadas o disminuidas. Se trata del método para el botón graficar, del Public Sub graficar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles graficar.Click
End Sub
Private Sub arriba_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles arriba.Click
textboxyminimo.Text = Val(textboxyminimo.Text) + 1
textboxymaximo.Text = Val(textboxymaximo.Text) + 1
yminimo = Val(textboxyminimo.Text) + 1 'El gráfico no cambiará pero esto hará que la vista del gráfico suba en el eje y.
ymaximo = Val(textboxymaximo.Text) + 1 'El gráfico no cambiará pero esto hará que la vista del gráfico suba en el eje y.
xminimo = Val(textboxxminimo.Text) 'Variable ya declarada como Public.
xmaximo = Val(textboxxmaximo.Text) 'Variable ya declarada como Public.
Dim cerox As Integer = ((400) / (xmaximo – xminimo)) * (0 – xminimo) '400 son los pixeles que hay en x. xminimo es la escala de inicio en el eje x. xmaximo es la escala de fin en el eje x
Dim ceroy As Integer = ((400) / (yminimo – ymaximo)) * (0 – ymaximo)
Dim rayadeescala As Integer
grafico = PictureBox1.CreateGraphics
grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón Graficar, que borre el gráfico que estaba anteriormente antes de crear uno nuevo, para que no quede un gráfico sobre otro.
If yminimo < 0 Then 'Porque si la escala mínima negativa de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar.
grafico.DrawLine(Pens.White, 0, ceroy, 400, ceroy) 'Trazo de la línea blanca horizontal (eje x).
End If
If xmaximo > 0 Then 'Porque si la escala máxima positiva de las x fuera cero o negativa, no se verá la línea del eje de las y al graficar.
grafico.DrawLine(Pens.White, cerox, 0, cerox, 400) 'Trazo de la línea blanca vertical (eje y).
End If
If yminimo < 0 Then 'Porque si la escala mínima de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las x.
'Este For es para poner las rayitas de escala del eje x positivo.
For a As Integer = 1 To xmaximo 'Se hacen las rayitas del eje x positivo, desde el 0 hasta el valor máximo de la escala de las x. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje y
rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.
grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia abajo como hacia arriba del eje x, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
'Este For es para poner las rayitas de escala del eje x negativo.
For a As Integer = xminimo To 0 'Se hacen las rayitas del eje x negativo, desde el valor mímino de x hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.
rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.
grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles.
Next
End If
If xmaximo > 0 Then 'Porque si la escala máxima de las x fuera cero o fuera negativa, no se verá la línea del eje de las y al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las y.
'Este For es para poner las rayitas de escala del eje y positivo.
For a As Integer = 1 To ymaximo 'Se hacen las rayitas del eje y positivo, desde el 0 hasta el valor máximo de la escala de las y. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje x.
rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.
grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los número 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
'Este For es para poner las rayitas de escala del eje y negativo.
For a As Integer = yminimo To 0 'Se hacen las rayitas del eje y negativo, desde el valor mínimo de y hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.
rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.
grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
End If
'Se crea una nueva instancia de la clase Evaluador
Dim mEval As New Evaluador()
'Se crea una variable tipo string y le asignamos la expresión que queremos evaluar
Dim mExpresion As String = TextBox1.Text ' = "X"
'Se crea un objeto StringCollection y agregamos los parámetros de entrada que usará el método eval
Dim mParameters As New StringCollection()
mParameters.Add("ByVal X as Double")
'Las funciones a utilizar pertenece al espacio de nombres System.Math.
'se hace necesario entonces, crear un objeto StringCollection y agregar
'el namespace System.Math.
Dim mNameSpaces As New StringCollection()
mNameSpaces.Add("System.Math")
'Se invoca el método PrecompilarFunción y verificamos si se genero correctamente el assembly.
If mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces) Then
'Si el assembly se generó correctamente, se crea un array con los valores de los parametros a evaluar
'Hasta este momento se tiene el plano cartesiano con las escalas correspondientes. De aquí en adelante el código es para graficar la función.
For coordenadax As Double = xminimo To xmaximo Step 0.01
Dim mParam() = {coordenadax}
'Se invoca el método Evaluar y se muestra el resultado
coordenaday = mEval.Evaluar(mParam)
coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))
coordenadayadaptada = Int((((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo)))
coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))
coordenadayadaptada = (((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo))
grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1)
Next
Else
MsgBox("No se ha generado el Assembly")
End If
End Sub
Private Sub abajo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles abajo.Click
textboxyminimo.Text = Val(textboxyminimo.Text) – 1
textboxymaximo.Text = Val(textboxymaximo.Text) – 1
yminimo = Val(textboxyminimo.Text) – 1 'El gráfico no cambiará pero esto hará que la vista del gráfico baje en el eje y.
ymaximo = Val(textboxymaximo.Text) – 1 'El gráfico no cambiará pero esto hará que la vista del gráfico baje en el eje y.
xminimo = Val(textboxxminimo.Text) 'Variable ya declarada como Public.
xmaximo = Val(textboxxmaximo.Text) 'Variable ya declarada como Public.
Dim cerox As Integer = ((400) / (xmaximo – xminimo)) * (0 – xminimo) '400 son los pixeles que hay en x. xminimo es la escala de inicio en el eje x. xmaximo es la escala de fin en el eje x
Dim ceroy As Integer = ((400) / (yminimo – ymaximo)) * (0 – ymaximo)
Dim rayadeescala As Integer
grafico = PictureBox1.CreateGraphics
grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón Graficar, que borre el gráfico que estaba anteriormente antes de crear uno nuevo, para que no quede un gráfico sobre otro.
If yminimo < 0 Then 'Porque si la escala mínima negativa de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar.
grafico.DrawLine(Pens.White, 0, ceroy, 400, ceroy) 'Trazo de la línea blanca horizontal (eje x).
End If
If xmaximo > 0 Then 'Porque si la escala máxima positiva de las x fuera cero o negativa, no se verá la línea del eje de las y al graficar.
grafico.DrawLine(Pens.White, cerox, 0, cerox, 400) 'Trazo de la línea blanca vertical (eje y).
End If
If yminimo < 0 Then 'Porque si la escala mínima de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las x.
'Este For es para poner las rayitas de escala del eje x positivo.
For a As Integer = 1 To xmaximo 'Se hacen las rayitas del eje x positivo, desde el 0 hasta el valor máximo de la escala de las x. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje y
rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.
grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia abajo como hacia arriba del eje x, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
'Este For es para poner las rayitas de escala del eje x negativo.
For a As Integer = xminimo To 0 'Se hacen las rayitas del eje x negativo, desde el valor mímino de x hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.
rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.
grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles.
Next
End If
If xmaximo > 0 Then 'Porque si la escala máxima de las x fuera cero o fuera negativa, no se verá la línea del eje de las y al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las y.
'Este For es para poner las rayitas de escala del eje y positivo.
For a As Integer = 1 To ymaximo 'Se hacen las rayitas del eje y positivo, desde el 0 hasta el valor máximo de la escala de las y. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje x.
rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.
grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los número 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
'Este For es para poner las rayitas de escala del eje y negativo.
For a As Integer = yminimo To 0 'Se hacen las rayitas del eje y negativo, desde el valor mínimo de y hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.
rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.
grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
End If
'Se crea una nueva instancia de la clase Evaluador
Dim mEval As New Evaluador()
'Se crea una variable tipo string y le asignamos la expresión que queremos evaluar
Dim mExpresion As String = TextBox1.Text ' = "X"
'Se crea un objeto StringCollection y agregamos los parámetros de entrada que usará el método eval
Dim mParameters As New StringCollection()
mParameters.Add("ByVal X as Double")
'Las funciones a utilizar pertenece al espacio de nombres System.Math.
'se hace necesario entonces, crear un objeto StringCollection y agregar
'el namespace System.Math.
Dim mNameSpaces As New StringCollection()
mNameSpaces.Add("System.Math")
'Se invoca el método PrecompilarFunción y verificamos si se genero correctamente el assembly.
If mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces) Then
'Si el assembly se generó correctamente, se crea un array con los valores de los parametros a evaluar
'Hasta este momento se tiene el plano cartesiano con las escalas correspondientes. De aquí en adelante el código es para graficar la función.
For coordenadax As Double = xminimo To xmaximo Step 0.01
Dim mParam() = {coordenadax}
'Se invoca el método Evaluar y se muestra el resultado
coordenaday = mEval.Evaluar(mParam)
coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))
coordenadayadaptada = Int((((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo)))
coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))
coordenadayadaptada = (((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo))
grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1)
Next
Else
MsgBox("No se ha generado el Assembly")
End If
End Sub
Private Sub derecha_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles derecha.Click
textboxxminimo.Text = Val(textboxxminimo.Text) + 1
textboxxmaximo.Text = Val(textboxxmaximo.Text) + 1
xminimo = Val(textboxxminimo.Text) + 1 'El gráfico no cambiará pero esto hará que la vista del gráfico se mueva a la derecha del eje x.
xmaximo = Val(textboxxmaximo.Text) + 1 'El gráfico no cambiará pero esto hará que la vista del gráfico se mueva a la derecha del eje x.
yminimo = Val(textboxyminimo.Text) 'Variable ya declarada como Public.
ymaximo = Val(textboxymaximo.Text) 'Variable ya declarada como Public.
Dim cerox As Integer = ((400) / (xmaximo – xminimo)) * (0 – xminimo) '400 son los pixeles que hay en x. xminimo es la escala de inicio en el eje x. xmaximo es la escala de fin en el eje x
Dim ceroy As Integer = ((400) / (yminimo – ymaximo)) * (0 – ymaximo)
Dim rayadeescala As Integer
grafico = PictureBox1.CreateGraphics
grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón Graficar, que borre el gráfico que estaba anteriormente antes de crear uno nuevo, para que no quede un gráfico sobre otro.
If yminimo < 0 Then 'Porque si la escala mínima negativa de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar.
grafico.DrawLine(Pens.White, 0, ceroy, 400, ceroy) 'Trazo de la línea blanca horizontal (eje x).
End If
If xmaximo > 0 Then 'Porque si la escala máxima positiva de las x fuera cero o negativa, no se verá la línea del eje de las y al graficar.
grafico.DrawLine(Pens.White, cerox, 0, cerox, 400) 'Trazo de la línea blanca vertical (eje y).
End If
If yminimo < 0 Then 'Porque si la escala mínima de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las x.
'Este For es para poner las rayitas de escala del eje x positivo.
For a As Integer = 1 To xmaximo 'Se hacen las rayitas del eje x positivo, desde el 0 hasta el valor máximo de la escala de las x. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje y
rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.
grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia abajo como hacia arriba del eje x, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
'Este For es para poner las rayitas de escala del eje x negativo.
For a As Integer = xminimo To 0 'Se hacen las rayitas del eje x negativo, desde el valor mímino de x hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.
rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.
grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles.
Next
End If
If xmaximo > 0 Then 'Porque si la escala máxima de las x fuera cero o fuera negativa, no se verá la línea del eje de las y al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las y.
'Este For es para poner las rayitas de escala del eje y positivo.
For a As Integer = 1 To ymaximo 'Se hacen las rayitas del eje y positivo, desde el 0 hasta el valor máximo de la escala de las y. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje x.
rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.
grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los número 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
'Este For es para poner las rayitas de escala del eje y negativo.
For a As Integer = yminimo To 0 'Se hacen las rayitas del eje y negativo, desde el valor mínimo de y hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.
rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.
grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
End If
'Se crea una nueva instancia de la clase Evaluador
Dim mEval As New Evaluador()
'Se crea una variable tipo string y le asignamos la expresión que queremos evaluar
Dim mExpresion As String = TextBox1.Text ' = "X"
'Se crea un objeto StringCollection y agregamos los parámetros de entrada que usará el método eval
Dim mParameters As New StringCollection()
mParameters.Add("ByVal X as Double")
'Las funciones a utilizar pertenece al espacio de nombres System.Math.
'se hace necesario entonces, crear un objeto StringCollection y agregar
'el namespace System.Math.
Dim mNameSpaces As New StringCollection()
mNameSpaces.Add("System.Math")
'Se invoca el método PrecompilarFunción y verificamos si se genero correctamente el assembly.
If mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces) Then
'Si el assembly se generó correctamente, se crea un array con los valores de los parametros a evaluar
'Hasta este momento se tiene el plano cartesiano con las escalas correspondientes. De aquí en adelante el código es para graficar la función.
For coordenadax As Double = xminimo To xmaximo Step 0.01
Dim mParam() = {coordenadax}
'Se invoca el método Evaluar y se muestra el resultado
coordenaday = mEval.Evaluar(mParam)
coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))
coordenadayadaptada = Int((((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo)))
coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))
coordenadayadaptada = (((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo))
grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1)
Next
Else
MsgBox("No se ha generado el Assembly")
End If
End Sub
Private Sub izquierda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles izquierda.Click
textboxxmaximo.Text = Val(textboxxmaximo.Text) – 1
textboxxminimo.Text = Val(textboxxminimo.Text) – 1
xmaximo = Val(textboxxmaximo.Text) – 1 'El gráfico no cambiará pero esto hará que la vista del gráfico se mueva a la izquierda del eje x.
xminimo = Val(textboxxminimo.Text) – 1 'El gráfico no cambiará pero esto hará que la vista del gráfico se mueva a la izquierda del eje x.
yminimo = Val(textboxyminimo.Text) 'Variable ya declarada como Public.
ymaximo = Val(textboxymaximo.Text) 'Variable ya declarada como Public.
Dim cerox As Integer = ((400) / (xmaximo – xminimo)) * (0 – xminimo) '400 son los pixeles que hay en x. xminimo es la escala de inicio en el eje x. xmaximo es la escala de fin en el eje x
Dim ceroy As Integer = ((400) / (yminimo – ymaximo)) * (0 – ymaximo)
Dim rayadeescala As Integer
grafico = PictureBox1.CreateGraphics
grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón Graficar, que borre el gráfico que estaba anteriormente antes de crear uno nuevo, para que no quede un gráfico sobre otro.
If yminimo < 0 Then 'Porque si la escala mínima negativa de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar.
grafico.DrawLine(Pens.White, 0, ceroy, 400, ceroy) 'Trazo de la línea blanca horizontal (eje x).
End If
If xmaximo > 0 Then 'Porque si la escala máxima positiva de las x fuera cero o negativa, no se verá la línea del eje de las y al graficar.
grafico.DrawLine(Pens.White, cerox, 0, cerox, 400) 'Trazo de la línea blanca vertical (eje y).
End If
If yminimo < 0 Then 'Porque si la escala mínima de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las x.
'Este For es para poner las rayitas de escala del eje x positivo.
For a As Integer = 1 To xmaximo 'Se hacen las rayitas del eje x positivo, desde el 0 hasta el valor máximo de la escala de las x. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje y
rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.
grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia abajo como hacia arriba del eje x, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
'Este For es para poner las rayitas de escala del eje x negativo.
For a As Integer = xminimo To 0 'Se hacen las rayitas del eje x negativo, desde el valor mímino de x hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.
rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.
grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles.
Next
End If
If xmaximo > 0 Then 'Porque si la escala máxima de las x fuera cero o fuera negativa, no se verá la línea del eje de las y al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las y.
'Este For es para poner las rayitas de escala del eje y positivo.
For a As Integer = 1 To ymaximo 'Se hacen las rayitas del eje y positivo, desde el 0 hasta el valor máximo de la escala de las y. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje x.
rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.
grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los número 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
'Este For es para poner las rayitas de escala del eje y negativo.
For a As Integer = yminimo To 0 'Se hacen las rayitas del eje y negativo, desde el valor mínimo de y hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.
rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.
grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.
Next
End If
'Se crea una nueva instancia de la clase Evaluador
Dim mEval As New Evaluador()
'Se crea una variable tipo string y le asignamos la expresión que queremos evaluar
Dim mExpresion As String = TextBox1.Text ' = "X"
'Se crea un objeto StringCollection y agregamos los parámetros de entrada que usará el método eval
Dim mParameters As New StringCollection()
mParameters.Add("ByVal X as Double")
'Las funciones a utilizar pertenece al espacio de nombres System.Math.
'se hace necesario entonces, crear un objeto StringCollection y agregar
'el namespace System.Math.
Dim mNameSpaces As New StringCollection()
mNameSpaces.Add("System.Math")
'Se invoca el método PrecompilarFunción y verificamos si se genero correctamente el assembly.
If mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces) Then
'Si el assembly se generó correctamente, se crea un array con los valores de los parametros a evaluar
'Hasta este momento se tiene el plano cartesiano con las escalas correspondientes. De aquí en adelante el código es para graficar la función.
For coordenadax As Double = xminimo To xmaximo Step 0.01
Dim mParam() = {coordenadax}
'Se invoca el método Evaluar y se muestra el resultado
coordenaday = mEval.Evaluar(mParam)
coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))
coordenadayadaptada = Int((((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo)))
coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))
coordenadayadaptada = (((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo))
grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1)
Next
Else
MsgBox("No se ha generado el Assembly")
End If
End Sub
Private Sub textboxxminimo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textboxxminimo.KeyPress
If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 45 Or Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) = 8 Then
Else
Beep() 'Emite sonido.
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.
End If
End Sub
Private Sub textboxxmaximo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textboxxmaximo.KeyPress
If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 45 Or Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) = 8 Then
Else
Beep() 'Emite sonido.
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.
End If
End Sub
Private Sub textboxyminimo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textboxyminimo.KeyPress
If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 45 Or Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) = 8 Then
Else
Beep() 'Emite sonido.
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.
End If
End Sub
Private Sub textboxymaximo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textboxymaximo.KeyPress
If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 45 Or Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) = 8 Then
Else
Beep() 'Emite sonido.
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.
End If
End Sub
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles limpiar.Click
If TextBox1.Text = "" Then 'Si no se le pusiera esta condición y sólo se programara grafico.Clear(Color.Black), daría un error que diría: "No se entroló NullReference Exception. Object reference not set to an instance of an object."
Else
TextBox1.Text = ""
grafico.Clear(Color.Black)
End If
End Sub
Private Sub inicio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
formulariodeinicio.Show()
Me.Hide()
End Sub
Private Sub salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles salir.Click
Dim mensaje As Integer
mensaje = MsgBox("¿Realmente desea salir del programa?", MsgBoxStyle.YesNo, "Graficador de Funciones Matemáticas")
If mensaje = 6 Then
formulariodesalida.Show()
Me.Hide()
End If
End Sub
Private Sub InsertarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertarToolStripMenuItem.Click
TextBox1.Focus()
End Sub
Private Sub SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalirToolStripMenuItem.Click
graficar_Click(sender, e)
End Sub
Private Sub EditarFunciónToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditarFunciónToolStripMenuItem.Click
TextBox1.Focus()
End Sub
Private Sub EscalaMínimaEnXToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EscalaMínimaEnXToolStripMenuItem.Click
textboxxminimo.Focus()
End Sub
Private Sub EscalaMáximaEnXToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EscalaMáximaEnXToolStripMenuItem.Click
textboxxmaximo.Focus()
End Sub
Private Sub EscalamínimaEnYToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EscalamínimaEnYToolStripMenuItem.Click
textboxyminimo.Focus()
End Sub
Private Sub EscalaMáximaEnYToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EscalaMáximaEnYToolStripMenuItem.Click
textboxymaximo.Focus()
End Sub
Private Sub AumentarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AumentarToolStripMenuItem.Click
aumentarzoom_Click(sender, e)
graficar_Click(sender, e)
End Sub
Private Sub DisminuirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DisminuirToolStripMenuItem.Click
disminuirzoom_Click(sender, e)
graficar_Click(sender, e)
End Sub
Private Sub DToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DToolStripMenuItem.Click
End Sub
Private Sub HaciaArribaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaciaArribaToolStripMenuItem.Click
arriba_Click(sender, e) 'Llama el procedimiento del botón arriba.
End Sub
Private Sub HaciaAbajoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaciaAbajoToolStripMenuItem.Click
abajo_Click(sender, e) 'Llama el procedimiento del botón abajo.
End Sub
Private Sub HaciaLaDerechaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaciaLaDerechaToolStripMenuItem.Click
derecha_Click(sender, e) 'Llama el procedimiento del botón derecha.
End Sub
Private Sub HaciaLaIzquierdaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaciaLaIzquierdaToolStripMenuItem.Click
izquierda_Click(sender, e) 'Llama el procedimiento del botón izquierda.
End Sub
Private Sub SalirToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalirToolStripMenuItem1.Click
salir_Click(sender, e)
End Sub
Private Sub ayuda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ayuda.Click
formulariodeayuda.Show()
Me.Hide()
End Sub
Private Sub UsoDelProgramaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UsoDelProgramaToolStripMenuItem.Click
ayuda_Click(sender, e) 'Llama el procedimiento del botón ayuda.
End Sub
Private Sub AcercaDeGraficadosDeFuncionesMatemáticasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AcercaDeGraficadosDeFuncionesMatemáticasToolStripMenuItem.Click
formulariodecreditos.Show()
Me.Hide()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles raicesconmetododelafalsaposicion.Click
formulariometododelafalsaposicion.Show()
Me.Hide()
formulariometododelafalsaposicion.textboxfuncion.Text = TextBox1.Text 'Al TextBox donde se introduce la función del formulario de la Falsa Posición para encontrar raíces, le está asignando o poniendo lo que hay en el TextBox1, que es la función para graficar.
End Sub
Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
formulariometodonewtonraphson.Show()
Me.Hide()
formulariometodonewtonraphson.textboxfuncion.Text = TextBox1.Text 'Al TextBox donde se introduce la función del formulario de Newton-Raphson para encontrar raíces, le está asignando o poniendo lo que hay en el TextBox1, que es la función para graficar.
End Sub
End Class
Autor:
Jaime Montoya
Santa Ana, 25 de julio de 2008
El Salvador
Página anterior | Volver al principio del trabajo | Página siguiente |