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

📄 vrulerwnd.cpp

📁 又VC++实现的基于TWAIN的扫描仪图像输入处理软件
💻 CPP
字号:
//垂直标尺窗口

#include "stdafx.h"
#include "source10.h"
#include "VRulerWnd.h"
#include "Data.h"
#include "const.h"
#include "ChooseRulerDlg.h"
#include "ViewWnd.h"

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

extern CData *pData;
extern CViewWnd *pViewWnd;

/////////////////////////////////////////////////////////////////////////////
//构造体和析构函数                                                   //
/////////////////////////////////////////////////////////////////////////////
CVRulerWnd::CVRulerWnd()
{
}
CVRulerWnd::~CVRulerWnd()
{
}

/////////////////////////////////////////////////////////////////////////////
//映射                                                               //
/////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CVRulerWnd, CWnd)
  //{{AFX_MSG_MAP(CVRulerWnd)
	  ON_WM_PAINT()
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
//刷新窗口,坐标窗口单位为英寸                                              //
/////////////////////////////////////////////////////////////////////////////
void CVRulerWnd::OnPaint() 
{
	CPaintDC dc(this); 
	CPen pen(PS_SOLID, 0, RGB(0,0,0)); 

	dc.SetMapMode(MM_ANISOTROPIC);
	dc.SetWindowExt(1,pData->m_nZoomFactor);
	dc.SetViewportExt(1,1);

	dc.SetWindowOrg(0, 0);	
    dc.SetWindowOrg(0, pData->m_ptPaintOrg.y);

 	int LogLenY =(int)(pData->m_szLogImageSize.cy*FuMian/ pData->m_szScanFrame.cy);	
	int nIndicatorLen = 0;
	
	dc.TextOut(2,0,"0",1);
	//不同放大比例下,标尺的显示
	if(pData->m_nZoomFactor==4||pData->m_nZoomFactor==8)
	{
      if(pData->m_nZoomFactor==8)
	  {
	    for (int i=0,j=0,nIndPos=0; i<pData->m_szLogImageSize.cy/5/LogLenY; i++)
		{
		  nIndicatorLen = ((i+1)%2==0)? IL_LONG:IL_MEDIUM2;
		  nIndPos += LogLenY * 5;
		  dc.MoveTo(nIndicatorLen, nIndPos);
		  dc.LineTo(VRULER_RIGHT, nIndPos);
		}
	  }
     if(pData->m_nZoomFactor==4)
	 {
	   for (int i=0,j=0,nIndPos=0; i<pData->m_szLogImageSize.cy/LogLenY; i++)
	   {
		 nIndicatorLen = ((i+1)%5==0)? IL_LONG:IL_MEDIUM1;
		 nIndPos +=LogLenY;
		 dc.MoveTo(nIndicatorLen, nIndPos);
		 dc.LineTo(VRULER_RIGHT, nIndPos);
 	  }
	 }

      //A0  1000个点为1英寸
      dc.TextOut(2,502,"5",1);
	  dc.TextOut(1,1002,"10",2);
      dc.TextOut(1,1502,"15",2);
	  dc.TextOut(1,2002,"20",2);
	  dc.TextOut(1,2502,"25",2);
      dc.TextOut(1,3002,"30",2);
	  dc.TextOut(1,3502,"35",2);
      dc.TextOut(1,4002,"40",2);
      dc.TextOut(1,4502,"45",2);
      dc.TextOut(1,5002,"50",2);

	  /*//A1  1300个点为1英寸
      dc.TextOut(2,652,"5",1);
	  dc.TextOut(1,1302,"10",2);
      dc.TextOut(1,1952,"15",2);
	  dc.TextOut(1,2602,"20",2);
	  dc.TextOut(1,3252,"25",2);
	  dc.TextOut(1,3902,"30",2);
      dc.TextOut(1,4552,"35",2);*/

	  //西飞 600个点为1英寸
	  /*dc.TextOut(1,600,"10",2);
	  dc.TextOut(1,1200,"20",2);
      dc.TextOut(1,1800,"30",2);
      dc.TextOut(1,2400,"40",2); 
      dc.TextOut(1,3000,"50",2);
      dc.TextOut(1,3600,"60",2);
      dc.TextOut(1,4200,"70",2);
      dc.TextOut(1,4800,"80",2);
	  dc.TextOut(1,5400,"90",2);
      dc.TextOut(1,6000,"100",3);*/
  	}
	
   if(pData->m_nZoomFactor==2||pData->m_nZoomFactor==1)
   {
	if(pData->m_nZoomFactor==2)
	{
	 for (int i=0,j=0,nIndPos=0; i<pData->m_szLogImageSize.cy/(LogLenY/5); i++)
	  {
		 if((i+1)%25==0)
		 {
			nIndicatorLen=IL_LONG;
		 }
		 else if((i+1)%5==0)
		 {
			nIndicatorLen =IL_MEDIUM1;
		 }
		 else
		 {
		    nIndicatorLen =IL_SHORT;	
		 }
		 
		nIndPos +=LogLenY/5;
		dc.MoveTo(nIndicatorLen, nIndPos);
		dc.LineTo(VRULER_RIGHT, nIndPos);
      	  
	  }
	}

	if(pData->m_nZoomFactor==1)
	{
	 for (int i=0,j=0,nIndPos=0; i<pData->m_szLogImageSize.cy/(LogLenY/10); i++)
	  {
		 if((i+1)%50==0)
		 {
			nIndicatorLen=IL_LONG;
		 }
		 else if((i+1)%10==0)
		 {
			nIndicatorLen =IL_MEDIUM1;
		 }
		 else if((i+1)%2==0)
		 {
		    nIndicatorLen =IL_MEDIUM2;	
		 }
		 else
		 {
	    	nIndicatorLen =IL_SHORT;	
		 }
		 
		nIndPos +=LogLenY/10;
		dc.MoveTo(nIndicatorLen, nIndPos);
		dc.LineTo(VRULER_RIGHT, nIndPos);
      	  
	  }
	}
 
     //A0  1000个点为1英寸
	 LPSTR lpst2={"123456789"};
	 int i,j;
     j=100;  
	 for(i=0;i<9;i++)
	 {
	   dc.TextOut(2,j,lpst2,1);
       lpst2=lpst2+1;
	   j=j+100;
	 }

     LPSTR lpst3={"101112131415161718192021222324252627282930313233343536373839404142434445464748"};
	 j=1002; 
     for(i=0;i<49;i++)
	 {
		dc.TextOut(1,j,lpst3,2);
        lpst3=lpst3+2;
	    j=j+100;
	 }

    //A1  1300个点为1英寸
    /* LPSTR lpst2={"123456789"};
	 int i,j;
     j=130;  
	 for(i=0;i<9;i++)
	 {
	   dc.TextOut(2,j,lpst2,1);
       lpst2=lpst2+1;
	   j=j+130;
	 }

     LPSTR lpst3={"1011121314151617181920212223242526272829303132333435"};
	 j=1302; 
     for(i=0;i<26;i++)
	 {
		dc.TextOut(2,j,lpst3,2);
        lpst3=lpst3+2;
	    j=j+130;
	 }*/


    //西飞600个点为1英寸
     /*LPSTR lpst2={"2468"};
	 int i,j;
     j=120;  
	 for(i=0;i<4;i++)
	 {
	   dc.TextOut(2,j,lpst2,1);
       lpst2=lpst2+1;
	   j=j+120;
	 }

     LPSTR lpst3={"101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698"};
	 j=600; 
     for(i=0;i<45;i++)
	 {
		dc.TextOut(2,j,lpst3,2);
        lpst3=lpst3+2;
	    j=j+120;
	 }
     dc.TextOut(1,j,"100",3); */
   }	
}

⌨️ 快捷键说明

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