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

📄 draw.cpp

📁 原创的在windowsCE下的界面程序。仿照Kangsberg自动化软件的界面仿制。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -