⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xgraphdatanotation.cpp

📁 Displaying large amounts of technical data in a chart can be a frustrating task. You can find tons o
💻 CPP
字号:
// XGraphDataNotation.cpp: Implementierung der Klasse XGraphDataNotation.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "XGraphDataNotation.h"
#include "XGraphDataSerie.h"
#include "XGraph.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif 

IMPLEMENT_SERIAL( CXGraphDataNotation, CXGraphObject, 1 )

//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////

CXGraphDataNotation::CXGraphDataNotation()
{
	m_Font.CreateFont(12, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,
			   OUT_DEFAULT_PRECIS, CLIP_CHARACTER_PRECIS, ANTIALIASED_QUALITY,
			   DEFAULT_PITCH | FF_DONTCARE, _T("Arial"));

	m_bCanMove = m_bCanEdit = m_bCanResize = false;
	m_bPositioned = false;
}

CXGraphDataNotation::~CXGraphDataNotation()
{
	m_Font.DeleteObject();

}

void CXGraphDataNotation::Draw(CDCEx *pDC)
{
	TDataPoint point;

	if (!m_bVisible)
		return;
	
	if (m_bSizing)
		m_Tracker.Draw (pDC);
	
	CFontSelector   fs(&m_Font, pDC);
	
	point.fXVal = m_fXVal;
	point.fYVal = m_fYVal;

	int nXPos = m_pGraph->GetXAxis (m_pGraph->GetCurve (m_nCurve).GetXAxis ()).GetPointForValue (&point).x;
	int nYPos = m_pGraph->GetYAxis (m_pGraph->GetCurve (m_nCurve).GetYAxis ()).GetPointForValue (&point).y;
	
	if (!m_bPositioned)
	{
		m_clRect.SetRect (nXPos, nYPos - 20, nXPos + 1, nYPos);
		pDC->DrawText(m_cText, m_clRect,  DT_CENTER | DT_CALCRECT);
		m_bPositioned = true;
	}

	m_clRect.OffsetRect (nXPos - m_clRect.left, nYPos - m_clRect.top - 20);
	m_clRect.InflateRect (1,1,1,1);
	pDC->FillSolidRect (m_clRect, 0L);
	m_clRect.DeflateRect (1,1,1,1);
	pDC->FillSolidRect (m_clRect, RGB(255,255,255));
	pDC->DrawText(m_cText, m_clRect,  DT_CENTER);

	pDC->FillSolidRect (nXPos - 1, nYPos - 1, 3, 3, 0);
	pDC->MoveTo(nXPos, nYPos);
	pDC->LineTo(nXPos, m_clRect.bottom);
}


void CXGraphDataNotation::Serialize( CArchive& archive )
{
	CXGraphObject::Serialize (archive);

    if( archive.IsStoring() )
    {
		archive << m_fXVal;
		archive << m_fYVal;
		archive << m_nCurve;
		archive << m_nIndex;
		archive << m_cText;
    }
	else
    {
		archive >> m_fXVal;
		archive >> m_fYVal;
		archive >> m_nCurve;
		archive >> m_nIndex;
		archive >> m_cText;
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -