![]() |
Gráfica de curvas
Hola, soy muy nueva programando y tengo una duda que seguramente alguien me la podrá sacar.
Necesito graficar una curva de una señal a lo largo del tiempo. Yo siempre hice esto colocando puntos o lineas en un PaintBox, utilizando el Canvas. Pero el problema con este componente es que cada ves que se abre una venta y se cierra se me borra parte de la curva. Lo otro que probé fué con una Image, pero los procesos son muy lentos. Y como tengo que ir desplazando la curva a medida que avanzan los puntos fuera del Image, eso me significa borrarlo y volver a graficar todos los puntos un pixel corrido hacia la izquieda. Lo cual me demora demasiado. Alguien sabe cual es la herramienta mas apropiada para esta aplicación?? y cómo hago para que se vaya desplazando la curva hacia la izquierda de una manera mas sencilla?? Muchas gracias !!! |
Hola:
En cuanto a lo de dibujar la linea de forma rápida, la mejor manera es usando una operación XOR, aunque con ello pierdas la de ventaja de ver la línea dibujada de un color concreto. La técnica consiste en dibujar la línea, aplicando previamente a la propiedad Mode del objeto Pen, la operación raster pmNOTXOR. Esto hace que la línea se dibuje en el color inverso del que hay en el Canvas (por ello no se dibuja de un color concreto), con la ventaja de que cuando vuelves a dibujar encima, devuelve la imagen a su color inicial, así te ahorras el tiempo de redibujado del fondo. Si quieres que la línea se actualice con mucha frecuencia, seguramente ésta es la mejor opción. El algoritmo sería más o menos este: Código:
Pen.Mode := pmNOTXOR; |
Me parece que lo que tu necesitas es redibujar el componente cada ves que este lo requiera, o si el gráfico es demasiado lento de dibujar, hacerlo en un TBitmap y dibujar el bitmap sobre tu componente cuando este lo necesite.
Si lugar a dudas, tu clase tendría que ser algo como esta, y en el paint dibujar tus curvas: (con todo respeto :D) Código:
TCurvas = TGraphicControl |
Creo que lo que le pasa es que dibuja directamente sobre el canvas del formulario, por lo que al abrir una ventana encima de esta, una parte del dibujo canvas se pierde, por el que se redibuja por defecto.
Pienso que lo más práctico es poner un TImage i dibujar sobre el canvas que lleva (ej: image1.picture.bitmap.canvas), que este no se mantendrá aunque se abran ventanas encima. |
Hola A Todos Como Puedo Dibujar Una Onda Senoidal Espero Q Me Puedan
Ayudar No Se Si Como Empezar |
La franja horaria es GMT +2. Ahora son las 15:22:43. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi