UCanCode
Software focuses on general application software development. We provide complete solution for developers. No matter you want to develop a simple database
workflow application, or an large flow/diagram based system, our product will provide a complete solution for you. Our product had been used by hundreds of top companies around the world!
"100% source code provided! Free you from not daring to use components because of unable to master the key technology of components!"
|
VC++
Example Source: 2D Chart and 3D Plot Print Chart
Control
|
|
By Kris Jearakul
Environment:
Visual C++
6.0,Win 95/98,NT4.0.
The print
routine has been tested with HP Laserjet 4ML and
Lexmark 3200, with Acrobat Writer by setting the
resolution at 600 dpi.
Introduction
The CChart class is
the class derived from
CWnd class. The class provides the
functionality of Windows
plotting chart control . The
chart plotted
from this class will look like the output of an
Oscilloscope .
By the way, I found that there is an article like
this already posted here . So CChart3d is the
derived class from CChart that will be able to
plot data in 3D style. The demo project will will
plot data in 2D and 3D like a Waterfall plot found
in an expensive Signal Analyser.
Implementing
CChart and CChart3d
to your project First add these four files to your
project. Chart3d.cpp , Chart3d.h , Chart.cpp and
Chart.h . Then you can add the object to like this
:
CChart m_Chart2d ;
CChart3d m_Chart3d;
After that you can
customize, create and then update new data to
chart respectively. In the demo project you can
find the implementation of CChart and CChart3d in
the routine
CWFDemoView::InitialUpdate();
CWFDemoView::OnTimer();
CWFDemoView::OnPrint(CDC *pDC);
Customize
Control
Customize
control of
chart can be done before and after the
chart is
created. If you change setting after the
chart was
created then call function Invalidate() to redrawn
the chart.
- Setting
Chart Title
can be done by calling the function
SetChartTitle(Cstring str)
- Setting Range
of each axis can be done by calling the
following functions:
CChart::SetRange(double Xmin, double Xmax,
double Ymin, doubleYmax)
Default: SetRange(-10,10,-10,10)
CChart3d::SetRange3d(double Xmin, double Xmax,
double Ymin, double Ymax,
double Zmin , double Zmax)
Default: SetRange3d(0,100,0,20,0,100)
- Setting the
Axiss Label can be done by calling the
functions:
CChart::SetAxisLabel(Cstring strLabelX , Cstring strLabelY)
- Setting the
number of grid scale for each axis and the
labels to be plotted on screen can be done by
calling the functions:
CChart::SetGridNumber(int nGridX , int nGridY)
CChart3d::SetGridNumber3D(int nGridX, int nGridY, int nGridZ)
Note: Grid
labels will be automatic drawn according to the
number of grid setting.
- Setting the
Axis style by calling the function:
CChart::SetAxisStyle(int nStyle)
- Customize
color on chart Background Color can be modified
with variable: m_BGColor. Axis color can be
modified with variable: m_AxisColor. Grid color
can be modified with variable: m_GridColor.
Series plot color can be modified with variable:
CSerie::m_plotColor.
Example
mChart.m_BGColor = RGB(255,0,0,)
mChart.m_AxisColor = RGB(0,0,0);
mChart.m_GridColor = RGB(120,120,120);
mChart.mpSerie[0].m_plotColor = RGB(0,255,0) ;
- Set the number
of series on chart
by modify variable
CChart::nSerieCount.
Note:
The maximum series on the code is 60 but you can
assemble it and change to any number is your
want.
- Allocate
number of points for all series by calling
function:
CChart::AllocSerie(int nSerie)
Caution :
Setting the number of series has to be done
before calling this function
- Working with
the Chart
- Creating
Chart - After you finished customizing the
chart then call the function:
Create(DWORD dwStyle, CRect &rect, CWnd *pParent, UINT id)
Example:
mChart.Create(WS_CHILD|WS_VISIBLE,Rect,this,12000);
- Updating
Chart -
You can update data for each series by calling
function :
SetXYValue(double x , double y , int index , int nSerieIdx).
If you want
chart to be redrawn function Invalidate()
should be called . The
chart background will be drawn
as it was when the chart was first created
then it will save the background in the
buffer. But if you changed background color or
grid color then you need to call the
Invalidate() function with argument FALSE to
force the chart
background to be redrawn .
-
Printing Chart
- In the demo project you can
preview
and print
the chart
. I have test the program with several
printers. The function CChart::PrintChart(CDC
*pDC,int x ,int y) is used for printing the
chart.
In the demo
project I added this function in OnPrint(CDC *pDC)
in CFormView class as example :
void CWFDemoView::OnPrint(CDC* pDC, CPrintInfo* )
{
m_Chart2d.PrintChart(pDC,500,200);
m_Chart3d.PrintChart(pDC,500,1800);
}
Downloads
Download demo
project - 29 Kb
Download
source - 10 Kb
|
|
|
|
|
|