Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Graph.cpp
Package: shingoes.rar [view]
Upload User: tdk119
Upload Date: 2008-01-21
Package Size: 51k
Code Size: 6k
Category:
Graph Drawing
Development Platform:
Visual C++
- //2006.3.24
- //Devang
- //Graph class for EMS2
- //
- //此类为显示曲线,
- #include "stdafx.h"
- #include "Graph.h"
- #include "math.h"
- CGraph::CGraph()
- {
- m_pDC = NULL;
- m_data = NULL;
- m_color = RGB(0, 128, 64);
- m_origin = CPoint(0, 0);
- m_scale = 1;
- bViewX = TRUE;
- XColor = RGB(0,0,0);
- XMin = 0;
- XMax = 100;
- bViewY = TRUE;
- YColor = RGB(0,0,0);
- YMin = 0;
- YMax = 100;
- bViewGrid = TRUE;
- GridColor = RGB(192,192,192);
- GridWidth = 50;
- }
- CGraph::~CGraph()
- {
- m_pDC = NULL;
- m_data = NULL;
- }
- BOOL CGraph::SetDC(CDC *dc)
- {
- m_pDC = dc;
- return TRUE;
- }
- CDC *CGraph::GetDC()
- {
- return m_pDC;
- }
- BOOL CGraph::SetData(float *data)
- {
- m_data = data;
- return TRUE;
- }
- float * CGraph::GetData()
- {
- return m_data;
- }
- BOOL CGraph::SetGraphRect(CRect rect)
- {
- m_rect = rect;
- return TRUE;
- }
- CRect CGraph::GetGraphRect()
- {
- return m_rect;
- }
- BOOL CGraph::SetXrect(CRect rect)
- {
- Xrect = rect;
- return TRUE;
- }
- CRect CGraph::GetXrect()
- {
- return Xrect;
- }
- BOOL CGraph::SetYrect(CRect rect)
- {
- Yrect = rect;
- return TRUE;
- }
- CRect CGraph::GetYrect()
- {
- return Yrect;
- }
- BOOL CGraph::SetXColor(COLORREF color)
- {
- XColor = color;
- return TRUE;
- }
- COLORREF CGraph::GetXColor()
- {
- return XColor;
- }
- BOOL CGraph::SetYColor(COLORREF color)
- {
- YColor = color;
- return TRUE;
- }
- BOOL CGraph::SetX(float min, float max)
- {
- XMin = min;
- XMax = max;
- return TRUE;
- }
- float CGraph::GetXmin()
- {
- return XMin;
- }
- float CGraph::GetXmax()
- {
- return XMax;
- }
- COLORREF CGraph::GetYColor()
- {
- return YColor;
- }
- BOOL CGraph::SetY(float min, float max)
- {
- YMin = min;
- YMax = max;
- return TRUE;
- }
- float CGraph::GetYmin()
- {
- return YMin;
- }
- float CGraph::GetYmax()
- {
- return YMax;
- }
- BOOL CGraph::SetGridWidth(UINT width)
- {
- GridWidth = width;
- return TRUE;
- }
- UINT CGraph::GetGridWidth()
- {
- return GridWidth;
- }
- BOOL CGraph::IsViewX(BOOL bView)
- {
- bViewX = bView;
- return bViewX;
- }
- BOOL CGraph::IsViewY(BOOL bView)
- {
- bViewY = bView;
- return bViewY;
- }
- BOOL CGraph::IsViewGrid(BOOL bView)
- {
- bViewGrid = bView;
- return bViewGrid;
- }
- BOOL CGraph::SetGridColor(COLORREF color)
- {
- GridColor = color;
- return TRUE;
- }
- COLORREF CGraph::GetGridColor()
- {
- return GridColor;
- }
- BOOL CGraph::PaintX()
- {
- CPen pen(PS_SOLID, 0, XColor);
- CPen *oldpen = m_pDC->SelectObject(&pen);
- UINT align = m_pDC->SetTextAlign(TA_CENTER);
- m_pDC->MoveTo(Xrect.left, Xrect.top);
- m_pDC->LineTo(Xrect.right, Xrect.top);
- m_pDC->SetTextAlign(align);
- m_pDC->SelectObject(oldpen);
- return TRUE;
- }
- BOOL CGraph::PaintY()
- {
- CPen pen(PS_SOLID, 0, YColor);
- CPen *oldpen = m_pDC->SelectObject(&pen);
- UINT align = m_pDC->SetTextAlign(TA_CENTER);
- m_pDC->MoveTo(Yrect.right, Yrect.top);
- m_pDC->LineTo(Yrect.right, Yrect.bottom);
- m_pDC->SetTextAlign(align);
- m_pDC->SelectObject(oldpen);
- return TRUE;
- }
- BOOL CGraph::Paint()
- {
- if (bViewX)
- {
- PaintX();
- }
- if (bViewY)
- {
- PaintY();
- }
- if (bViewGrid)
- {
- PaintGrid();
- }
- return PaintGraph();
- return TRUE;
- }
- CPoint CGraph::GetOrigin() //输出图形的原点
- {
- return m_origin;
- }
- BOOL CGraph::PaintGrid()
- {
- CPen pen(PS_DOT, 0, GridColor);
- CPen *oldpen = m_pDC->SelectObject(&pen);
- int oldmode = m_pDC->SetBkMode(TRANSPARENT);
- int i;
- for(i=m_rect.top+GridWidth; i<m_rect.bottom; )
- {
- m_pDC->MoveTo(m_rect.left, i);
- m_pDC->LineTo(m_rect.right, i);
- i += GridWidth;
- }
- for(i=m_rect.left+GridWidth; i<m_rect.right;)
- {
- m_pDC->MoveTo(i, m_rect.top);
- m_pDC->LineTo(i, m_rect.bottom);
- i += GridWidth;
- }
- m_pDC->SetBkMode(oldmode);
- m_pDC->SelectObject(oldpen);
- return TRUE;
- }
- BOOL CGraph::SetGraphColor(COLORREF color)
- {
- m_color = color;
- return TRUE;
- }
- COLORREF CGraph::GetGraphColor()
- {
- return m_color;
- }
- int CGraph::SetDataLength(int length)
- {
- int ol = m_length;
- m_length = length;
- return ol;
- }
- int CGraph::GetDataLength()
- {
- return m_length;
- }
- BOOL CGraph::PaintGraph()
- {
- if(m_data == NULL)
- return FALSE;
- CPen pen(PS_SOLID, 0, m_color);
- CPen *oldpen = m_pDC->SelectObject(&pen);
- float widthscale = GetWidthScale();
- float heightscale = GetHeightScale();
- int i;
- int x,y,width,height;
- x = m_origin.x;
- y = m_origin.y;
- width = m_rect.Width();
- height = m_rect.Height();
- m_pDC->MoveTo(x, (int)(y - m_data[0]*heightscale));
- if (width/(widthscale*m_scale) > m_length)
- {
- m_scale = 1;
- }
- for (i=0; x<width; x++,i++)
- {
- m_pDC->LineTo(x, (int)(y - m_data[(int)(i/(widthscale*m_scale))]*heightscale));
- }
- m_pDC->SelectObject(oldpen);
- return TRUE;
- }
- float CGraph::GetWidthScale()
- {
- return (float)(m_rect.Width())/(float)(m_length);
- }
- float CGraph::GetHeightScale()
- {
- float min,max,absmax;
- CPoint origin;
- CalculMinMax(m_data, m_length, absmax, min, max);
- origin.x = m_rect.left;
- if ((max >=0) && (min >= 0))
- origin.y = m_rect.bottom;
- else if((max <= 0) && (min <= 0))
- origin.y = m_rect.top;
- else
- origin.y = (long)(m_rect.Height()*fabs(max)/(max-min));
- SetOrigin(origin);
- return (float)(m_rect.Height())/(float)(max-min);
- }
- BOOL CGraph::SetOrigin(CPoint origin)
- {
- m_origin = origin;
- return TRUE;
- }
- BOOL CGraph::SetGraphScale(int scale)
- {
- m_scale = scale;
- return TRUE;
- }
- int CGraph::GetGraphScale()
- {
- return m_scale;
- }
- float CGraph::CalculMinMax(float *a, int count, float &absmax, float &min, float &max)
- {
- int i;
- min = max = a[0];
- for(i=0; i<count; i++)
- {
- if(a[i] > max)
- max = a[i];
- if(a[i] < min)
- min = a[i];
- }
- absmax = fabsf(min)>fabsf(max)?fabsf(min):fabsf(max);
- return absmax;
- }