NSChart - Visual C++

Por:ivancp,enviado 26 Jul 2004
Éste es un control que crea gráficas de barras y sectores en formularios MFC Visual C++, aquí puedes ver una muestra del resultado:

nschart2.gif
Gráfica de Barras

nschart.gif
Gráfica de Sectores


Introduccion

El control CNSChartCtrl es basado en la clase CWnd. el propósito de esta clase es crear un control donde se pueda visualizar gráficas de barras y sectores para ser usado en un cuadro de dialogo o en una vista. Este control permite la modificación de elementos y colores en tiempo de ejecución. Originalmente ha sido compilado en Win98 con VC++ SP6 pero puede ser compilado en cualquier versión de Windows donde pueda correr Visual C++ 6.0 o superior.

Este control es una alternativa a todos las herramientas que hacen un trabajo parecido.
Como usar el control

Crear un control definido por el usuario en el modo diseño del editor de dialogo del Visual C++y luego poner el nombre "MFC_NSChartCtrl" como el nombre de la clase (Class name). El valor de caption es usado para establecer el titulo del control.
  1. Crear una instancia de la clase en el archivo de cabecera del dialogo.

    #include "NSChartCtrl.h"
    ...
    CNSChartCtrl m_chart

  2. Instanciar el control con la variable de la clase:

    m_chart.SubclassDlgItem(IDC_CUSTOM1,this);

  3. Inicializar los colores y elementos del control en la function InitDialog() o cualquier otra.

    Code: Seleccionar todo
    1.  m_chart.PrepareColors(CNSChartCtrl::GrayScale); //Colors

    2.     m_chart.AddValue(10,"One");

    3.     m_chart.AddValue(20,"Two");

    4.     m_chart.AddValue(90,"Three");

    5.     m_chart.AddValue(30,"Four");

    6.     m_chart.AddValue(40,"Five");

    7.     m_chart.AddValue(20,"Six")



  4. Ejecutar!

Personalizando los colores y colores de fondo

El control NSChart usa un array de colores y/o patrones para rellenar los sectores y barras. Para agregar nuevos colores o patrones personalizados, use la función AddSolidBrush(COLORREF)ó AddBrush(COLORREF).

Code: Seleccionar todo
  1. m_chart.ResetColors();

  2. m_chart.AddSolidBrush(0x000000FF);

  3. m_chart.AddSolidBrush(RGB(255,0,255));

  4. m_chart.AddBrush(m_pBrush); // CBrush* m_pBrush previamente inicializado.



Notificaciones de eventos

El control NSChartCtrl notifica a la ventana u objeto que lo contiene cuando se ha hecho click en uno de los sectores o barras, según sea el caso.El código de notificacion es NSCS_SELECTEDITEM. Para ser utilizado necesita agregar las siguientes líneas de código.

Agregar la función en el bloque AFX_MSG de la clase..

Code: Seleccionar todo
  1. class CYourDialog : public CDialog

  2. {

  3.    ...

  4.       //{{AFX_MSG(CYourDialog)

  5.       ...

  6.       afx_msg void OnChartSelectedItem(NMHDR* pNMHDR, LRESULT* pResult);

  7.       ...

  8.       //}}AFX_MSG

  9.    ...

  10. };

  11. void CYourDialog::OnChartSelectedItem(NMHDR* pNMHDR, LRESULT* pResult)

  12. {

  13.    LPNMCHARTCTRL nmchart = (LPNMCHARTCTRL)pNMHDR;

  14.    if(nmchart->iItem >= 0 )

  15.    {

  16.       //... have selected item

  17.    }

  18.    *pResult = FALSE;

  19. }



Declarar el mensaje de notificacion en el bloque MESSAGE_MAP :

Code: Seleccionar todo
  1. BEGIN_MESSAGE_MAP(CYourDialog, CDialog )

  2.    //{{AFX_MSG_MAP(CYourDialog)

  3.    ...

  4.    ON_NOTIFY(NSCS_SELECTEDITEM, IDC_CUSTOM_CTRL, OnChartSelectedItem)

  5.    ...

  6. END_MESSAGE_MAP()



Si el control es creado en una vista tiene que cambiar el valor de IDC_CUSTOM_CTRL con 0.

Historial de versiones



  • 25 Jun 2004 - 1.0.1 Versión inicial.
  • 02 Aug 2004 - 1.1.0
    • Solucion de problemas de re-pintado..
    • Agregado de metodos de agregacion y eliminación en tiempo de ejecución.
    • Agregado de los mensajes de notificación y detección de click.

Archivos Adjuntos

Otros Artículos en esta sección

  • Graficador de Funciones 2D y 3D
    He aquí un programa que grafica todo tipo de funciones gracias a su interprete que utiliza un Analizador Léxico, Analizador Sintáctico, y un Analizador semántico.
    Por: Lizardo,2004-03-14
  • Como implementar Double Buffering en Visual C++
    Es una técnica para reducir el parpadeo producido al dibujar en la pantalla, es muy útil para desarrollar juegos por que éstos suelen requerir refrescamiento continuo de pantalla.
    Por: ivancp,2006-06-19
  • Calculadora en Visual C++
    Es un tutorial sobre como implementar una calculadora científica desde cero con Visual C++ con MFC. También se implementa el calculo de algunas funciones matemáticas.
    Por: ivancp,2008-05-03
¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »