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

📄 curvedevice.cpp

📁 郎顿51开发板上位机代码 帮助你快速开发工控程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	//将内存DC的内容一次画在屏幕DC上
	dc.BitBlt(0, 0, bmp.bmWidth, bmp.bmHeight, &dcmem, 0, 0, SRCCOPY);

 	dcmem.SelectObject(pbitmapold);
	bmpc.DeleteObject();
	dcmem.DeleteDC();
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_MoveWindow(int x, int y)
//输入参数:仪表窗口左上角新位置坐标
//返回值:无
//作用:移动仪表窗口
void CurveDevice::CD_MoveWindow(int x, int y)
{
	CRect rect;
	GetWindowRect(&rect);
	MoveWindow(x, y, rect.Width(), rect.Height(), true);
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetRecordLength(UINT length)
//输入参数:数组长度
//返回值:无
//作用:设置仪表内置记录数组的长度,该长度不应该小于要显示曲线在显示区的抽样点数目
void CurveDevice::CD_SetRecordLength(UINT length)
{
	delete [] CD_Record;			//删除旧的记录内存段
	CD_RecordLength = length;		//设置新的记录长度
	CD_Record = new int[length];	//分配新的内存空间
	memset(CD_Record, 0, length * sizeof(CD_Record[0]));	//把新的记录清零
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetStatus(UINT status)
//输入参数:状态常量,可以是CD_TEST(自检状态)或者CD_WORK(工作状态)
//返回值:无
//作用:设置仪表的当前状态
void CurveDevice::CD_SetStatus(UINT status)
{
	memset(CD_Record, 0, CD_RecordLength * sizeof(CD_Record[0]));	//记录清零
	CD_Status = status;
	CD_RecordStartPos = 0;	//将相关变量复位
	CD_CurrentNumber = 0;
	if(status == CD_TEST)	//自检状态,有默认的抽样时间间隔
		CD_SetTimer(20);
	DrawFace();
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetTimer(UINT time)
//输入参数:以毫秒为单位的时间
//返回值:无
//作用:设置仪表的单位抽样时间,决定抽样的精度和曲线平移速度
void CurveDevice::CD_SetTimer(UINT time)
{
	CD_Timer = time;
	KillTimer(1);
	SetTimer(1, time, NULL);
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetSize(UINT width, UINT height)
//输入参数:仪表的宽度和仪表的高度,单位是象素
//返回值:无
//作用:设置仪表的尺寸
void CurveDevice::CD_SetSize(UINT width, UINT height)
{
	CD_Width = width;
	CD_Height = height;
	RECT rect;
	GetWindowRect(&rect);
	MoveWindow(rect.left, rect.top, width, height);
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetOrigin(int x, int y)
//输入参数:仪表的内部原点相对于仪表左上角的的坐标
//返回值:无
//作用:设置仪表的内部坐标系原点位置
void CurveDevice::CD_SetOrigin(int x, int y)
{
	CD_Origin.x = x;
	CD_Origin.y = y;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetGridSize(UINT x_width, UINT y_width)
//输入参数:格子在X轴方向的宽度和在Y方向的宽度
//返回值:无
//作用:设置仪表背景的格子大小
void CurveDevice::CD_SetGridSize(UINT x_width, UINT y_width)
{
	CD_XGridLength = x_width;
	CD_YGridLength = y_width;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetGridNumber(UINT x_number, UINT y_number)
//输入参数:格子在X轴方向的数量和在Y方向的数量
//返回值:无
//作用:设置仪表背景的格子数量
void CurveDevice::CD_SetGridNumber(UINT x_number, UINT y_number)
{
	CD_XGridNum = x_number;
	CD_YGridNum = y_number;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetBorderWidth(UINT width)
//输入参数:边框宽度,单位是象素
//返回值:无
//作用:设置仪表立体边框的宽度
void CurveDevice::CD_SetBorderWidth(UINT width)
{
	CD_BorderWidth = width;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetAxleLength(UINT length)
//输入参数:Y轴长度,单位是象素
//返回值:无
//作用:设置仪表显示的函数值对应的轴(对于水平放置,是y轴,否则是x轴)能达到的最大高度
void CurveDevice::CD_SetAxleLength(UINT length)
{
	CD_AxleLength = length;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetStepLength(UINT length)
//输入参数:步长,单位是象素
//返回值:无
//作用:设置各个抽样点在X轴方向的间距(默认是1象素)
void CurveDevice::CD_SetStepLength(UINT length)
{
	CD_StepLength = length;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetBorderStyle(UINT left, UINT top, UINT right, UINT bottom)
//输入参数:四个变量分别表示左、上、右、下边框是否显示,0表示不显示,1表示显示
//返回值:无
//作用:设置仪表的边框显示样式(该功能常用于仪表组合)
void CurveDevice::CD_SetBorderStyle(UINT left, UINT top, UINT right, UINT bottom)
{
	CD_BorderTop = top;	
	CD_BorderBottom = bottom;
	CD_BorderLeft = left;
	CD_BorderRight = right;	
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetBkColor(COLORREF color)
//输入参数:背景颜色
//返回值:无
//作用:设置仪表的背景颜色
void CurveDevice::CD_SetBkColor(COLORREF color)
{
	CD_BkColor = color;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetBdColor(COLORREF lightcolor, COLORREF darkcolor)
//输入参数:lightcolor是仪表边框的亮部颜色,darkcolor是其暗部颜色
//返回值:无
//作用:设置仪表的边框颜色
void CurveDevice::CD_SetBdColor(COLORREF lightcolor, COLORREF darkcolor)
{
	CD_BdLightColor = lightcolor;
	CD_BdDarkColor = darkcolor;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetAxleColor(COLORREF color)
//输入参数:坐标轴的颜色
//返回值:无
//作用:设置仪表坐标轴的颜色
void CurveDevice::CD_SetAxleColor(COLORREF color)
{
	CD_AxleColor = color;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetGridColor(COLORREF color)
//输入参数:背景网格的颜色
//返回值:无
//作用:设置仪表背景网格的颜色
void CurveDevice::CD_SetGridColor(COLORREF color)
{
	CD_GridColor = color;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetCurveColor(COLORREF color)
//输入参数:曲线的颜色
//返回值:无
//作用:设置要显示的曲线的颜色
void CurveDevice::CD_SetCurveColor(COLORREF color)
{
	CD_CurveColor = color;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetMaxNumber(double number)
//输入参数:仪表能显示的最大数值
//返回值:无
//作用:设置仪表能显示的最大数值(量程)
void CurveDevice::CD_SetMaxNumber(double number)
{
	CD_MaxNumber = number;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetPlaceMode(UINT mode)
//输入参数:仪表的放置方式常量,可以是CD_HORIZONTAL(水平)或者CD_VERTICAL(垂直)
//返回值:无
//作用:设置仪表的放置方式(水平或者垂直)
void CurveDevice::CD_SetPlaceMode(UINT mode)
{
	CD_PlaceMode = mode;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetWorkMode(UINT mode)
//输入参数:仪表的工作方式常量,可以是CD_REALTIME(实时曲线)或者CD_STATIC(静态曲线)
//返回值:无
//作用:设置仪表的工作方式(实时曲线方式或者静态曲线方式)
void CurveDevice::CD_SetWorkMode(UINT mode)
{
	if(mode == CD_REALTIME || mode == CD_STATIC)
		CD_WorkMode = mode;
}


/////////////////////////////////////////////////////////////////////////////////////////
//函数名:CD_SetCurrentNumber(double number)
//输入参数:当前要显示的数值
//返回值:无
//作用:设置仪表的当前要显示的数值
void CurveDevice::CD_SetCurrentNumber(double number)
{
	if(CD_WorkMode == CD_REALTIME)	//实时曲线模式
		CD_CurrentNumber = number;
	else if(CD_WorkMode == CD_STATIC)	//静态曲线模式
	{	
		int rec = (int)(CD_AxleLength * number / CD_MaxNumber);
		CD_Record[CD_RecordStartPos] = rec;	//插入记录
		CD_RecordStartPos ++;				//记录起始指针移动
		if(CD_RecordStartPos == CD_RecordLength)	//如果记录满了,从记录首部开始记录
			CD_RecordStartPos = 0;
		DrawFace();
	}
}


⌨️ 快捷键说明

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