📄 draw.cpp
字号:
pDC->SelectObject(penOld);
penNew.DeleteObject();
penOld->DeleteObject();
brushFill.DeleteObject();
pBrushOld->DeleteObject();
//------------右边数值树部分----------------------------------------------------------------------//
brushFill.CreateSolidBrush(RGB(1,128,1)); //绿色部分
pBrushOld = pDC->SelectObject(&brushFill);
pDC->Rectangle(rect.right*4/5,rect.bottom*2/11,rect.right*17/20,rect.bottom*2/11+rect.bottom*10/26);
pDC->Rectangle(rect.right*9/10,rect.bottom*2/11,rect.right*19/20,rect.bottom*2/11+rect.bottom*10/26);
pDC->SelectObject(pBrushOld);
brushFill.DeleteObject();
pBrushOld->DeleteObject();
brushFill.CreateSolidBrush(RGB(192,192,192)); //灰色部分
pBrushOld = pDC->SelectObject(&brushFill);
pDC->Rectangle(rect.right*4/5,rect.bottom*2/11+rect.bottom*10/52,rect.right*17/20,rect.bottom*2/11+rect.bottom*10/26);
pDC->Rectangle(rect.right*9/10,rect.bottom*2/11+rect.bottom*10/52,rect.right*19/20,rect.bottom*2/11+rect.bottom*10/26);
pDC->SelectObject(pBrushOld);
brushFill.DeleteObject();
pBrushOld->DeleteObject();
for(i=1;i<=9;i++) //画黑线刻度
{
pDC->MoveTo(rect.right*4/5,rect.bottom*2/11+rect.bottom*i*10/260);
pDC->LineTo(rect.right*17/20,rect.bottom*2/11+rect.bottom*i*10/260);
pDC->MoveTo(rect.right*9/10,rect.bottom*2/11+rect.bottom*i*10/260);
pDC->LineTo(rect.right*19/20,rect.bottom*2/11+rect.bottom*i*10/260);
}
brushFill.CreateSolidBrush(RGB(255,255,1)); //黄色的三角形
pBrushOld = pDC->SelectObject(&brushFill);
penNew.CreatePen(PS_SOLID, 1, RGB(255,255,1));
penOld=pDC->SelectObject(&penNew);
int temp1;
temp1=ok_1*100/180;
p_h[0].x=rect.right*17/20-3;
p_h[0].y=rect.bottom*2/11+rect.bottom*10*(100.0-temp1)/2600;
p_h[1].x=rect.right*4/5+2;
p_h[1].y=rect.bottom*2/11+rect.bottom*10*(100.0-temp1)/2600-8;
p_h[2].x=rect.right*4/5+2;
p_h[2].y=rect.bottom*2/11+rect.bottom*10*(100.0-temp1)/2600+8;
pDC->Polygon(p_h,3);
p_h[0].x=rect.right*19/20-3;
p_h[0].y=rect.bottom*2/11+rect.bottom*10*temp1/2600;
p_h[1].x=rect.right*9/10+2;
p_h[1].y=rect.bottom*2/11+rect.bottom*10*temp1/2600-8;
p_h[2].x=rect.right*9/10+2;
p_h[2].y=rect.bottom*2/11+rect.bottom*10*temp1/2600+8;
pDC->Polygon(p_h,3);
pDC->SelectObject(pBrushOld);
brushFill.DeleteObject();
pBrushOld->DeleteObject();
pDC->SelectObject(penOld);
penNew.DeleteObject();
penOld->DeleteObject();
//'''''''''''''''''''''''''''画刻度等''''''''''''''''''''''''''''''//
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkMode(TRANSPARENT);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*0*10/260-10, ETO_OPAQUE,NULL,_T("120"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*1*10/260-10, ETO_OPAQUE,NULL,_T("96"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*2*10/260-10, ETO_OPAQUE,NULL,_T("72"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*3*10/260-10, ETO_OPAQUE,NULL,_T("48"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*4*10/260-10, ETO_OPAQUE,NULL,_T("24"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*5*10/260-10, ETO_OPAQUE,NULL,_T("0"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*6*10/260-10, ETO_OPAQUE,NULL,_T("-24"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*7*10/260-10, ETO_OPAQUE,NULL,_T("-48"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*8*10/260-10, ETO_OPAQUE,NULL,_T("-72"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*9*10/260-10, ETO_OPAQUE,NULL,_T("-96"),NULL);
pDC->ExtTextOut(rect.right*17/20+8,rect.bottom*2/11+rect.bottom*10*10/260-10, ETO_OPAQUE,NULL,_T("-120"),NULL);
pDC->SetTextColor(RGB(255,255,1));
//----------------------------动态刻度-------------------------------//
_itoa( temp1, str, 10 );
str[2]='M';
str[3]=NULL;
pDC->ExtTextOut(rect.right*4/5, rect.bottom*2/11+rect.bottom*10/26+15, ETO_OPAQUE,NULL,str,NULL);
pDC->ExtTextOut(rect.right*9/10, rect.bottom*2/11+rect.bottom*10/26+15, ETO_OPAQUE,NULL,str,NULL);
pDC->SelectObject(pFontOld);
m_font.DeleteObject();
//'''''''''''''''''''''''''''大字体'''''''''''''''''''''''''''''''//
VERIFY(m_font.CreateFont(30, 6, 0, 0, 900,
FALSE, FALSE, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_SWISS, _T("Arial")));
pFontOld = pDC->SelectObject(&m_font);
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkMode(TRANSPARENT);
pDC->ExtTextOut(rect.right*4/5+5,rect.bottom*2/11-38, ETO_OPAQUE,NULL,_T("SETP LEVER"),NULL);
pDC->ExtTextOut(pt3[73].x, pt3[89].y-50, ETO_OPAQUE,NULL,_T("ME RPM"),NULL);
pDC->SetTextColor(RGB(255,255,1)); //黄颜色
pDC->ExtTextOut(pt3[73].x, pt3[89].y+200, ETO_OPAQUE,NULL,_T("Running"),NULL);
pDC->ExtTextOut(pt3[89].x-14, pt3[134].y+70, ETO_OPAQUE,NULL,str,NULL);//写最左边表盘的实时数据
pDC->ExtTextOut(rect.right*4/5+8,rect.bottom*2/11+rect.bottom*10/26+35, ETO_OPAQUE,NULL,_T("Man RPM Lim."),NULL);
pDC->SetTextColor(RGB(0,0,0)); //黑颜色,表头的字
pDC->ExtTextOut(rect.right/20, rect.bottom/44, ETO_OPAQUE,NULL,_T("Stand by"),NULL);
pDC->ExtTextOut(rect.right*2/5+rect.right/20+20, rect.bottom/44, ETO_OPAQUE,NULL,_T("Bridge"),NULL);
pDC->ExtTextOut(rect.right*3/5+rect.right/20, rect.bottom/44, ETO_OPAQUE,NULL,_T("Eng Ready"),NULL);
pDC->ExtTextOut(rect.right*4/5+rect.right/20, rect.bottom/44, ETO_OPAQUE,NULL,_T("System Ready"),NULL);
pDC->SelectObject(pFontOld);
m_font.DeleteObject();
//-------------------------白色按钮部分---------------------------------------------//
// CPen penNew,*penOld;
penNew.CreatePen(PS_SOLID, 1, RGB(185,185,185));
penOld=pDC->SelectObject(&penNew);
pDC->MoveTo(rect.left,rect.bottom*(8.9)/11);
pDC->LineTo(rect.right,rect.bottom*(8.9)/11);
pDC->SelectObject(penOld);
penNew.DeleteObject();
penOld->DeleteObject();
//''''''''''''''''''''''''按钮''''''''''''''''''''''''''''''''''''''''''''''''//
brushFill.CreateSolidBrush(RGB(229,229,228));
pBrushOld = pDC->SelectObject(&brushFill);
penNew.CreatePen(PS_SOLID, 2, RGB(241,241,232));
penOld=pDC->SelectObject(&penNew);
for(i=0;i<5;i++) //画按钮及其花纹
{
pDC->Rectangle(rect.right*i/5+rect.right/20,rect.bottom*(9.2)/11,rect.right*(i+1)/5-8,rect.bottom*(10.5)/11);
pDC->MoveTo(rect.right*i/5+rect.right/20,rect.bottom*(9.85)/11);
pDC->LineTo(rect.right*(i+1)/5-8,rect.bottom*(9.85)/11);
}
pDC->SelectObject(pBrushOld);
brushFill.DeleteObject();
pBrushOld->DeleteObject();
pDC->SelectObject(penOld);
penNew.DeleteObject();
penOld->DeleteObject();
brushFill.CreateSolidBrush(RGB(229,229,228));
pBrushOld = pDC->SelectObject(&brushFill);
penNew.CreatePen(PS_SOLID, 2, RGB(255,255,255));
penOld=pDC->SelectObject(&penNew);
for(i=0;i<5;i++) //开口向左的花纹
{
pWen[0].x=rect.right*i/5+rect.right/20;
pWen[0].y=rect.bottom*(9.2)/11;
pWen[1].x=rect.right*i/5+rect.right/20+3;
pWen[1].y=rect.bottom*(9.3625)/11;
pWen[2].x=rect.right*i/5+rect.right/20+4;
pWen[2].y=rect.bottom*(9.525)/11;
pWen[3].x=rect.right*i/5+rect.right/20+3;
pWen[3].y=rect.bottom*(9.6875)/11;
pWen[4].x=rect.right*i/5+rect.right/20;
pWen[4].y=rect.bottom*(9.85)/11;
pDC->Polygon(pWen,5);
pWen[0].y+=rect.bottom*(0.65)/11;
pWen[1].y+=rect.bottom*(0.65)/11;
pWen[2].y+=rect.bottom*(0.65)/11;
pWen[3].y+=rect.bottom*(0.65)/11;
pWen[4].y+=rect.bottom*(0.65)/11;
pDC->Polygon(pWen,5);
}
for(i=0;i<5;i++) //开口向右的花纹
{
pWen[0].x=rect.right*(i+1)/5-8;
pWen[0].y=rect.bottom*(9.2)/11;
pWen[1].x=rect.right*(i+1)/5-8-3;
pWen[1].y=rect.bottom*(9.3625)/11;
pWen[2].x=rect.right*(i+1)/5-8-4;
pWen[2].y=rect.bottom*(9.525)/11;
pWen[3].x=rect.right*(i+1)/5-8-3;
pWen[3].y=rect.bottom*(9.6875)/11;
pWen[4].x=rect.right*(i+1)/5-8;
pWen[4].y=rect.bottom*(9.85)/11;
pDC->Polygon(pWen,5);
pWen[0].y+=rect.bottom*(0.65)/11;
pWen[1].y+=rect.bottom*(0.65)/11;
pWen[2].y+=rect.bottom*(0.65)/11;
pWen[3].y+=rect.bottom*(0.65)/11;
pWen[4].y+=rect.bottom*(0.65)/11;
pDC->Polygon(pWen,5);
}
pDC->SelectObject(pBrushOld);
brushFill.DeleteObject();
pBrushOld->DeleteObject();
pDC->SelectObject(penOld);
penNew.DeleteObject();
penOld->DeleteObject();
//---------------------------------test------------------------------------//
if(test_1==TRUE)
{
brushFill.CreateSolidBrush(RGB(255,0,255));
pBrushOld = pDC->SelectObject(&brushFill);
pDC->Rectangle(rect.right*1/5+rect.right/20,rect.bottom*(9.2)/11,rect.right*(1+1)/5-8,rect.bottom*(10.5)/11);
pDC->SelectObject(pBrushOld);
brushFill.DeleteObject();
pBrushOld->DeleteObject();
}
}
void CDraw::re_draw()
{
if(ok_1==180)
can_or=TRUE;
else
{
if(ok_1==0)
can_or=FALSE;
}
if(ok_1<=180&&ok_1>=0&&can_or==FALSE)
ok_1+=1;
else
can_or=TRUE;
if(can_or==TRUE&&ok_1>0)
ok_1-=1;
else
{
can_or=FALSE;
}
if ((m_pBitmapOld) && (m_bitmap.GetSafeHandle()) && (m_dcBack.GetSafeHdc()))
{
m_dcBack.SelectObject(m_pBitmapOld);
m_dcBack.DeleteDC();
m_bitmap.DeleteObject();
}
Invalidate();
}
void CDraw::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
GetClientRect (&m_rect);
CMemDC memDC(&dc, &m_rect);
if(m_dcBack.GetSafeHdc()== NULL|| (m_bitmap.m_hObject == NULL) ) //如果m_dcBack与m_bitmap都没有被使用,则
{ //可用
m_dcBack.CreateCompatibleDC(&dc);
m_bitmap.CreateCompatibleBitmap(&dc, m_rect.Width(), m_rect.Height());
m_pBitmapOld = m_dcBack.SelectObject(&m_bitmap) ;
draw1(&m_dcBack, m_rect);
}
memDC.BitBlt(0, 0, m_rect.Width(), m_rect.Height(),
&m_dcBack, 0, 0, SRCCOPY) ;
// Do not call CStatic::OnPaint() for painting messages
}
void CDraw::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rect1;
// rect1=rect;
rect1.left=785/5+785/20;
rect1.right=785*2/5-8;
rect1.bottom =588*(10.5)/11;
rect1.top=588*(9.2)/11;
// CPoint pt;
// GetCursorPos(&pt);
//rect.right*1/5+rect.right/20,rect.bottom*(9.2)/11,rect.right*(1+1)/5-8,rect.bottom*(10.5)/11
if(rect1.PtInRect(point))
{
// MessageBox(_T("yangyupeng"));
test_1=TRUE; }
else
{
test_1=FALSE;
}
if(MK_LBUTTON ==nFlags)
MessageBox(_T("yangyupeng___mousemove"));
Invalidate();
// rect.right/5+rect.right/20,rect.bottom*(9.2)/11,rect.right*2/5-8,rect.bottom*(10.5)/11
CStatic::OnMouseMove(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -