📄 fluxdevice.cpp
字号:
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetMaxFlux(double flux)
//输入参数:被检测流量的最大值
//返回值:无
//作用:设置被检测流量的最大值。
void FluxDevice::FD_SetMaxFlux(double flux)
{
FD_MaxFlux = flux;
if(FD_CurrentFlux > FD_MaxFlux)
FD_CurrentFlux = FD_MaxFlux;
DrawFace();
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetSize(UINT width, UINT height)
//输入参数:仪表的宽度和高度,单位是象素
//返回值:无
//作用:设置仪表的尺寸。
void FluxDevice::FD_SetSize(UINT width, UINT height)
{
FD_Width = width;
FD_Height = height;
RECT rect;
GetWindowRect(&rect);
MoveWindow(rect.left, rect.top, width, height);
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetOrigin(int x, int y)
//输入参数:坐标系原点相对于仪表在窗口左上角的位置坐标
//返回值:无
//作用:设置仪表的内部坐标系原点(也就是流量管的底部的中心)
void FluxDevice::FD_SetOrigin(int x, int y)
{
FD_Origin.x = x;
FD_Origin.y = y;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetPipeSize(UINT radius, UINT length)
//输入参数:流量管的半径radius,流量管的长度length
//返回值:无
//作用:设置仪表的流量管的尺寸
void FluxDevice::FD_SetPipeSize(UINT radius, UINT length)
{
FD_PipeRadius = radius;
FD_PipeLength = length;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetBkColor(COLORREF color)
//输入参数:背景颜色
//返回值:无
//作用:设置仪表的背景颜色(默认是对话框的背景颜色)
void FluxDevice::FD_SetBkColor(COLORREF color)
{
FD_BkColor = color;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetFontSize(UINT size)
//输入参数:字体的大小
//返回值:无
//作用:设置流量表的刻度文字尺寸
void FluxDevice::FD_SetFontSize(UINT size)
{
FD_FontSize = size;
FD_Font.DeleteObject();
FD_Font.CreateFont(FD_FontSize, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_STROKE_PRECIS, CLIP_STROKE_PRECIS, DRAFT_QUALITY, VARIABLE_PITCH | FF_SWISS, _T("Arial")); //创建一个默认的字体
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetFrameSize(UINT radius, UINT length)
//输入参数:框架的半径radius(通常应该比流量管半径要大一些)
// 框架长度length,这个长度是只能被看见的部分的长度(不包含被流量管遮住的部分)
// length表示流量管上下两头的框架高度都是length个象素
//返回值:无
//作用:设置流量表的框架(固定流量管的金属架子)字尺寸
void FluxDevice::FD_SetFrameSize(UINT radius, UINT length)
{
FD_FrameRadius = radius;
FD_FrameLength = length;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetFrameFrontColor(COLORREF color)
//输入参数:框架外表面的颜色
//返回值:无
//作用:设置框架外表面(只在流量管两头看得见)的颜色
void FluxDevice::FD_SetFrameFrontColor(COLORREF color)
{
FD_FrameFrontColor = color;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetFrameBackColor(COLORREF color)
//输入参数:框架的内表面的颜色
//返回值:无
//作用:设置框架内表面(当流量管未满时能看到)的颜色
void FluxDevice::FD_SetFrameBackColor(COLORREF color)
{
FD_FrameBackColor = color;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetHighLevelColor(COLORREF color)
//输入参数:液体颜色
//返回值:无
//作用:设置流量达到高水平时流量管液体的颜色
void FluxDevice::FD_SetHighLevelColor(COLORREF color)
{
FD_HighLevelColor = color;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetMiddleLevelColor(COLORREF color)
//输入参数:液体颜色
//返回值:无
//作用:设置流量达到中等水平时流量管液体的颜色
void FluxDevice::FD_SetMiddleLevelColor(COLORREF color)
{
FD_MiddleLevelColor = color;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetLowLevelColor(COLORREF color)
//输入参数:液体颜色
//返回值:无
//作用:设置流量达到低水平时流量管液体的颜色
void FluxDevice::FD_SetLowLevelColor(COLORREF color)
{
FD_LowLevelColor = color;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetBigGridNum(UINT number)
//输入参数:格子数目
//返回值:无
//作用:设置流量表大刻度的格子数目
void FluxDevice::FD_SetBigGridNum(UINT number)
{
FD_BigGridNum = number;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetBigGridLength(UINT length)
//输入参数:刻度线长度,单位是象素
//返回值:无
//作用:设置流量表大刻度线的长度
void FluxDevice::FD_SetBigGridLength(UINT length)
{
FD_BigGridLength = length;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetTextColor(COLORREF color)
//输入参数:刻度文字的颜色
//返回值:无
//作用:设置流量表刻度文字的颜色
void FluxDevice::FD_SetTextColor(COLORREF color)
{
FD_TextColor = color;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetTextOffset(int x, int y)
//输入参数:文字相对于刻度线末端在x方向的偏移量和在y方向的偏移量
//返回值:无
//作用:设置流量表刻度文字相对于刻度线末端的位置
void FluxDevice::FD_SetTextOffset(int x, int y)
{
FD_TextOffset.x = x;
FD_TextOffset.y = y;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetGridColor(COLORREF color)
//输入参数:刻度线的颜色
//返回值:无
//作用:设置流量表刻度线的颜色
void FluxDevice::FD_SetGridColor(COLORREF color)
{
FD_GridColor = color;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetGridOffset(int x_offset)
//输入参数:刻度线在X方向相对于原点的偏移量
//返回值:无
//作用:设置流量表刻度线在X方向相对于原点的偏移量
void FluxDevice::FD_SetGridOffset(int x_offset)
{
FD_GridXOffset = x_offset;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetLevelRatio(double high_ratio, double middle_ratio)
//输入参数:high_ratio为中等流量和高流量的分界线,middle_ratio为低流量和中等流量的分界线
//返回值:无
//作用:设置流量表各流量等级的划分界线,用比例(小于1的正小数)表示
void FluxDevice::FD_SetLevelRatio(double high_ratio, double middle_ratio)
{
FD_HighLevelRatio = high_ratio;
FD_MiddleLevelRatio = middle_ratio;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetSmallGridNum(UINT number)
//输入参数:小刻度格子数目(最好是大刻度格子数目的整数倍)
//返回值:无
//作用:设置流量表小刻度的格子数目
void FluxDevice::FD_SetSmallGridNum(UINT number)
{
FD_SmallGridNum = number;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:FD_SetSmallGridNum(UINT number)
//输入参数:小刻度线的长度(一般是小于大刻度线的长度)
//返回值:无
//作用:设置流量表小刻度线的长度
void FluxDevice::FD_SetSmallGridLength(UINT length)
{
FD_SmallGridLength = length;
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:GetNextColor(COLORREF current_color, int delta)
//输入参数:current_color为源颜色,delta为变化量(可以取正负值)
//返回值:无
//作用:获得current_color的同样色调的下一颜色(如果delta大于0则为更亮的颜色,小于0则为更暗的颜色)
COLORREF FluxDevice::GetNextColor(COLORREF current_color, int delta)
{
long red = 0, green = 0, blue = 0;
if(GetRValue(current_color))
red = GetRValue(current_color) + delta;
if(GetGValue(current_color))
green = GetGValue(current_color) + delta;
if(GetBValue(current_color))
blue = GetBValue(current_color) + delta;
if(red > 255)
{
red = 255;
return current_color;
}
if(green > 255)
{
green = 255;
return current_color;
}
if(blue > 255)
{
blue = 255;
return current_color;
}
if(red < 0)
{
red = 0;
return current_color;
}
if(green < 0)
{
green = 0;
return current_color;
}
if(blue < 0)
{
blue = 0;
return current_color;
}
return RGB(red, green, blue);
}
/////////////////////////////////////////////////////////////////////////////////////////
//函数名:GetNextColor(COLORREF color, double ratio)
//输入参数:current_color为源颜色,ratio为变化比率
//返回值:无
//作用:获得current_color的同样色调的下一颜色(如果ratio大于1则为更亮的颜色,小于1则为更暗的颜色)
COLORREF FluxDevice::GetNextColor(COLORREF current_color, double ratio)
{
long red, green, blue;
red = (long)(GetRValue(current_color) * ratio);
green = (long)(GetGValue(current_color) * ratio);
blue = (long)(GetBValue(current_color) * ratio);
if(red > 255)
red = 255;
if(green > 255)
green = 255;
if(blue > 255)
blue = 255;
if(red < 0)
red = 0;
if(green < 0)
green = 0;
if(blue < 0)
blue = 0;
return RGB(red, green, blue);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -