📄 vrulerwnd.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 + -