ProEssentials第200例SimplePolar Chart极坐标图表,使用DLL单文档VC6.0实现

环境配置跟前面一样,这里不在介绍,只修改绘制函数。本例程序下载源代码下载链接

void CPEView::CreateSimpleSGraph()
{

	//! Right button click to show popup menu. //
	//! Double Click to show customization dialog. //
	//! Left-Click and drag to draw zoom box. Use popup memu or 'z' to undo zoom. // 
	
	// Simple example show the basics of a polar object. //
	// 极坐标图既包含Y轴数据(弧长)也包含X轴数据(弧度). //
	
	RECT rect;
	GetClientRect( &rect );
	
	// 构造对象,Polar_Graph //
	m_hPE = PEcreate(PECONTROL_PGRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);
	
	PEnset(m_hPE, PEP_nSUBSETS, 2);//2个子集
	PEnset(m_hPE, PEP_nPOINTS, 360);//每个子集360个点
	
	int p;
	float f1, f2;
	for (p=0; p<360; p++)
	{
		f1 = (float) p; //p°
		f2 = (float) 150 * sin((double) p * 0.054F);//弧长=150*sin转化为弧度
	//	f2= (float)300;//弧长
		PEvsetcellEx(m_hPE, PEP_faXDATA, 0, p, &f1);//第1个子集第p个点
		PEvsetcellEx(m_hPE, PEP_faYDATA, 0, p, &f2);
	}
	
	for (p=0; p<360; p++)
	{
		f1 = (float) p;
		f2 = (float) 150 * sin(((double) p * 0.044F)) * 2;//第2个子集第p个点
		PEvsetcellEx(m_hPE, PEP_faXDATA, 1, p, &f1);
		PEvsetcellEx(m_hPE, PEP_faYDATA, 1, p, &f2);
	}
	
	PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_LINE);
	PEnset(m_hPE, PEP_nALLOWZOOMING, 1);
	PEszset(m_hPE, PEP_szMAINTITLE, TEXT("极坐标图表"));//主标题PEP_szMAINTITLE
	PEszset(m_hPE, PEP_szSUBTITLE, TEXT("")); //无副标题
	float ftmp = .9F;
	PEvset(m_hPE, PEP_fFONTSIZELEGENDCNTL, &ftmp, 1 );
	PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);
	PEnset(m_hPE, PEP_bCACHEBMP, TRUE);
	PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
	
	// 设置线型
	int nTypes[] = { PELT_MEDIUMSOLID, PELT_MEDIUMSOLID };
	PEvset(m_hPE, PEP_naSUBSETLINETYPES, nTypes, 2);
	
	// 设置点型
	int nPTypes[] = { PEPT_DOTSOLID, PEPT_PLUS };
	PEvset(m_hPE, PEP_naSUBSETPOINTTYPES, nTypes, 2);
	
	// 子集合颜色值
	DWORD dwArray[2] = { PERGB(128, 198,0,0), PERGB(128, 0, 198, 0) };
	PEvset( m_hPE, PEP_dwaSUBSETCOLORS, dwArray, 2);
	
	//子集合标签 labels
	PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 0, TEXT("Signal #1" ));
	PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 1, TEXT("Signal #2" ));
	
	double dnull = -99999.0F;
	PEvset(m_hPE, PEP_fNULLDATAVALUEX, &dnull, 1);
	PEvset(m_hPE, PEP_fNULLDATAVALUE, &dnull, 1);
	
	// Set Various other features //
	PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
	PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
	PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);
	PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);
	PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);
	PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);
	PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);
	PEnset(m_hPE, PEP_nPOINTSIZE, PEPS_SMALL);
	
	PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);
	PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);
	PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);
	PEnset(m_hPE, PEP_bLABELBOLD, TRUE);
	PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);
	PEnset(m_hPE, PEP_nFONTSIZE, PEFS_MEDIUM);
	PEnset(m_hPE, PEP_nGRADIENTBARS, 8);
	PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);
	float f = 1.2F;
	PEvset(m_hPE, PEP_fFONTSIZEGNCNTL, &f, 1);
	PEnset(m_hPE, PEP_nIMAGEADJUSTBOTTOM, 100);
	
	// Improves metafile export //
	PEnset(m_hPE, PEP_nDPIX, 600);
	PEnset(m_hPE, PEP_nDPIY, 600);
	
	// Set Demo's RenderEngine to Gdi Plus // 
//	CMDIFrameWnd* pWnd = (CMDIFrameWnd*) AfxGetApp()->GetMainWnd();
//	pWnd->SendMessage(WM_CHANGE_METAFILE, PEPLAYMETAFILEGDIPLUS );

       
}
/************************************************************************/
/* 函数名:GetRandom()													
 * 参数	 :
 *	a [a,b]中a
 *	b [a,b]中b
 * 返回值
 *  int [a,b]间的随机整数
 *
 * 作者	 :Archie
 * 时间	 :2012年8月27日												*/
/************************************************************************/
int CPEView::GetRandom(int a, int b)
{
	int i = (rand()%(b-a+1))+a;
	return i;
}

ProEssentials第200例SimplePolar Chart极坐标图表,使用DLL单文档VC6.0实现_第1张图片

你可能感兴趣的:(ProEssentials第200例SimplePolar Chart极坐标图表,使用DLL单文档VC6.0实现)