sábado, 30 de julio de 2011

9.2 Vamos a utilizar el nuevo control en un ejemplo.


Crearemos un proyecto, incluyendo estos controles: 1 control ejescartesiano, 2 botones (ButtonFuncion y dibujar eje) y dos Toolbotones (ToolButtonmenos y ToolButtonmas)






En el formulario Fmain, colocamos el siguiente código:

' Gambas class file
PUBLIC valor1 AS Float 'contiene donde empieza el gráfico
PUBLIC valor2 AS Float 'contiene donde termina el gráfico
PUBLIC valor AS Integer 'para escalado con botones + o -

PUBLIC SUB Form_Open()
valor1 = -6.28
valor2 = 6.28
valor = 0

ejescartesiano1.ap1 = valor1
ejescartesiano1.ap2 = valor2
ejescartesiano1.B = ejescartesiano1.Height / 2
ejescartesiano1.c = ejescartesiano1.Width / 2

ejescartesiano1.colorejes = 17700

ejescartesiano1.dibujarejeup()
END

PUBLIC SUB dibujafuncionseno(empiezo AS Float, termino AS Float)
DIM x AS Float
DIM puntoxanterior AS Float
DIM puntoyanterior AS Float
Draw.Begin(ejescartesiano1)
Draw.ForeColor = Color.red
Draw.Text("f(x)=sin(x)*x", 40, 60)
ejescartesiano1.dibujarejeup()

FOR x = empiezo TO termino + 0.1 STEP 0.1
IF x = (empiezo) THEN
Draw.Point(ejescartesiano1.pasarUpxaUx(x), ejescartesiano1.pasarUpyaUy(Sin(x)))
puntoxanterior = ejescartesiano1.pasarUpxaUx(x)
puntoyanterior = ejescartesiano1.pasarUpyaUy(Sin(x) * x)
ELSE
Draw.line(puntoxanterior, puntoyanterior, ejescartesiano1.pasarUpxaUx(x), ejescartesiano1.pasarUpyaUy(Sin(x) * x))
puntoxanterior = ejescartesiano1.pasarUpxaUx(x)
puntoyanterior = ejescartesiano1.pasarUpyaUy(Sin(x) * x)
ENDIF
NEXT
Draw.End
END

PUBLIC SUB ejescartesiano1_DblClick()
ejescartesiano1.Clear
ejescartesiano1.B = Mouse.y ' - ejescartesiano1.y
ejescartesiano1.c = Mouse.x ' - ejescartesiano1.x
ejescartesiano1.dibujarejeup()
END

PUBLIC SUB dibujafuncioncos(empiezo AS Float, termino AS Float)
DIM x AS Float
DIM puntoxanterior AS Float
DIM puntoyanterior AS Float
ejescartesiano1.dibujarejeup()
Draw.Begin(ejescartesiano1)
Draw.ForeColor = Color.Orange
Draw.Text("funciones:", 10, 20)
Draw.ForeColor = Color.green
Draw.Text("cos(x)*x*2", 40, 40)
FOR x = empiezo TO termino + 0.1 STEP 0.1
Draw.Begin(ejescartesiano1)
Draw.ForeColor = Color.green
IF x = (empiezo) THEN
Draw.Point(ejescartesiano1.pasarUpxaUx(x), ejescartesiano1.pasarUpyaUy(Cos(x) * x * 2))
puntoxanterior = ejescartesiano1.pasarUpxaUx(x)
puntoyanterior = ejescartesiano1.pasarUpyaUy(Cos(x) * 2 * x)
ELSE
Draw.line(puntoxanterior, puntoyanterior, ejescartesiano1.pasarUpxaUx(x), ejescartesiano1.pasarUpyaUy(Cos(x) * x * 2))
puntoxanterior = ejescartesiano1.pasarUpxaUx(x)
puntoyanterior = ejescartesiano1.pasarUpyaUy(Cos(x) * 2 * x)
ENDIF
NEXT
Draw.End
END


PUBLIC SUB ToolButtonmas_Click()
valor = -1
ejescartesiano1.ap1 = ejescartesiano1.ap1 - valor
ejescartesiano1.ap2 = ejescartesiano1.ap2 + valor
ejescartesiano1.clear
ButtonFuncion_Click()
END

PUBLIC SUB ToolButtonmenos_Click()
valor = 1
ejescartesiano1.ap1 = ejescartesiano1.ap1 - valor
ejescartesiano1.ap2 = ejescartesiano1.ap2 + valor
ejescartesiano1.clear
ButtonFuncion_Click()
END

PUBLIC SUB ButtonFuncion_Click()
ejescartesiano1.dibujarejeup()
dibujafuncionseno(ejescartesiano1.ap1, ejescartesiano1.ap2)
dibujafuncioncos(ejescartesiano1.ap1, ejescartesiano1.ap2)
END

PUBLIC SUB Buttondibujareje_Click()
ejescartesiano1.Clear
Draw.Begin(ejescartesiano1)
Draw.BackColor = Color.blue
ejescartesiano1.dibujarejeup()
Draw.end
END

Y al ejecutar el programa, pulsando el boton “funciones” obtenemos,

Y con al pulsar boton – (lupa menos), podemos hacer zoom



Y al contrario con el + (lupa mas). También podemos hacer click en algun lugar del control para redefinir la posicion de los ejes:


No hay comentarios:

Publicar un comentario