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

📄 bk_ground.cpp

📁 一个基于PXA255的水情遥测、遥控系统现场服务器软件
💻 CPP
字号:
// BK_Ground.cpp: implementation of the CBK_Ground class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "BK_Ground.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

/*
void CBK_Ground::CBK_Ground()
{
	::Init_BK();
}
*/
/*
void CBK_Ground::~CBK_Ground()
{
	
}
*/

void CBK_Ground::Draw_BK(CDC *cdc)
{
    int x;
	CRect rc(StartX,StartY,H_Size+StartX,V_Size+StartY);
		

	MemDC.CreateCompatibleDC(NULL);
	MemBitmap.CreateCompatibleBitmap(cdc,H_Size,V_Size);
   
	CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);

	MemDC.InvertRect(rc);
	//MemDC.FillSolidRect(StartX,StartY,H_Size+StartX,V_Size+StartY,BK_Color);
	MemDC.FillSolidRect(0,0,H_Size,V_Size,BK_Color);

	//绘制坐标轴线,虚线
	hp=CreatePen(PS_DASH,0,Line_Color);
	MemDC.SelectObject(hp);
	for(x=1;x<H_Grid_Count+1;x++)
	{
		MemDC.MoveTo(x*H_Size/H_Grid_Count,0);
		MemDC.LineTo(x*H_Size/H_Grid_Count,V_Size);
	}

	for(x=1;x<V_Grid_Count+1;x++)
	{
		MemDC.MoveTo(0,x*V_Size/V_Grid_Count);
		MemDC.LineTo(H_Size,x*V_Size/V_Grid_Count);
	}
	

	//显示比例
	/*
	CString str;
	if(V_Scale_List[V_Scale]>999)
			str.Format(_T("%d V"),V_Scale_List[V_Scale]/1000);
	else
			str.Format(_T("%d mV"),V_Scale_List[V_Scale]);
	str=str+"  1s";
	MemDC.ExtTextOut(0,0,ETO_CLIPPED,rc,str,NULL);
	*/
	//双缓冲的拷备
	cdc->BitBlt(StartX,StartY,H_Size+StartX,V_Size+StartY,&MemDC,0,0,SRCCOPY);
	//cdc->BitBlt(0,0,H_Size,V_Size,&MemDC,0,0,SRCCOPY);

	MemDC.SelectObject(pOldBit);

	//释放资源	
	MemBitmap.DeleteObject();
	DeleteObject(hp);
	
	MemDC.DeleteDC();
	
	
}

void CBK_Ground::Single_Full()
{
}

void CBK_Ground::Init_BK()
{
	BK_Color=RGB(0,0,0);		//背景黑色
	Line_Color=RGB(0xff,0x000,0x00);	//坐标红色
	
}


void CBK_Ground::DrawSingle(CDC *cdc)
{
	int x;
	CRect rc(StartX,StartY,H_Size+StartX,V_Size+StartY);
		

	MemDC.CreateCompatibleDC(NULL);
	MemBitmap.CreateCompatibleBitmap(cdc,H_Size,V_Size);
   
	CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);

	MemDC.InvertRect(rc);
	//MemDC.FillSolidRect(StartX,StartY,H_Size+StartX,V_Size+StartY,BK_Color);
	MemDC.FillSolidRect(0,0,H_Size,V_Size,BK_Color);

	//绘制坐标轴线,虚线
	hp=CreatePen(PS_DASH,0,Line_Color);
	MemDC.SelectObject(hp);
	for(x=1;x<H_Grid_Count+1;x++)
	{
		MemDC.MoveTo(x*H_Size/H_Grid_Count,0);
		MemDC.LineTo(x*H_Size/H_Grid_Count,V_Size);
	}

	for(x=1;x<V_Grid_Count+1;x++)
	{
		MemDC.MoveTo(0,x*V_Size/V_Grid_Count);
		MemDC.LineTo(H_Size,x*V_Size/V_Grid_Count);
	}
	

	//显示比例
	/*
	CString str;
	if(V_Scale_List[V_Scale]>999)
			str.Format(_T("%d V"),V_Scale_List[V_Scale]/1000);
	else
			str.Format(_T("%d mV"),V_Scale_List[V_Scale]);
	str=str+"  1s";
	MemDC.ExtTextOut(0,0,ETO_CLIPPED,rc,str,NULL);
	*/
	//画信号线
	//画信号线,所有的都画一遍

	for(int i=0;i<8;i++)//八路通道
	{			//判断的条件为:小于8;被选中;队列的指针大于0,即有数据在队列中
		//设置画笔
		if((channel[i].Checked==1)&&(channel[i].SignalIndex>0))
		{
			hp=CreatePen(PS_SOLID,0,channel[i].DrawColour);
			SelectObject(MemDC,hp);
			MemDC.MoveTo(0,V_Size-channel[i].SignalLine[0]*V_Size/255);
			for(int t=1;t<channel[i].SignalIndex;t++)	//整个信号队列
				MemDC.LineTo(t*300/channel[i].PointCount,V_Size-channel[i].SignalLine[t]*V_Size/255);
		}

	}

	//双缓冲的拷备
	cdc->BitBlt(StartX,StartY,H_Size+StartX,V_Size+StartY,&MemDC,0,0,SRCCOPY);
	//cdc->BitBlt(0,0,H_Size,V_Size,&MemDC,0,0,SRCCOPY);

	MemDC.SelectObject(pOldBit);

	//释放资源	
	MemBitmap.DeleteObject();
	DeleteObject(hp);
	
	MemDC.DeleteDC();
	

/*

		/////绘制信号/////绘制信号/////绘制信号/////绘制信号/////绘制信号
		/////绘制信号/////绘制信号/////绘制信号/////绘制信号/////绘制信号
	
		hp=CreatePen(PS_SOLID,0,Line_Color);
		SelectObject(MemDC,hp);
		//******
		///有待调整,有测试用的数字在里面
		//******
		MemDC.MoveTo(0,(V_Per*V_Grid_Count/2-S_Cache[i*H_Cent])*V_Size/(V_Per*V_Grid_Count)-Bm);
		for(x=1;x<Cache_Size/H_Cent;x++)
		{
			Pix_X=(int)x*H_Size*H_Cent/Cache_Size;
			Pix_Y=(V_Per*V_Grid_Count/2-S_Cache[i*H_Cent+x])*V_Size/(V_Per*V_Grid_Count);
			MemDC.LineTo(Pix_X,Pix_Y-Bm);
		}
*/

}

POINT CBK_Ground::ComputePoint(POINT Old_pt)
{
	POINT pt;
	pt.x=0;
	return(pt);
}

void ChannelSet::Display()
{


}

⌨️ 快捷键说明

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