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

📄 texttool.cpp

📁 参数化车间设备资源绘制程序
💻 CPP
字号:
#include "StdAfx.h"
#include ".\texttool.h"

#include "textobj.h"
#include "visdrawview.h"
#include "visdrawdoc.h"
//#include "TextWriteDlg.h"

//#include "TextWriteDlg.h"

CTextTool::CTextTool(void)

{
	
	 m_font.lfHeight=30;
	 m_font.lfWidth=0;
	 m_font.lfEscapement=0;
	 m_font.lfOrientation=0;
	 m_font.lfWeight=FW_NORMAL;
	 m_font.lfItalic=FALSE;
	 m_font.lfUnderline=FALSE;
	 m_font.lfStrikeOut=FALSE;
	 m_font.lfCharSet=GB2312_CHARSET;
	 
	 m_font.lfOutPrecision=OUT_STROKE_PRECIS;
	 m_font.lfClipPrecision=CLIP_STROKE_PRECIS;
	 m_font.lfQuality=DRAFT_QUALITY;
	 m_font.lfPitchAndFamily=VARIABLE_PITCH|FF_MODERN;
	 strcpy_s( m_font.lfFaceName,"楷体_GB2312");
	
	 
}


CTextTool::CTextTool(DrawShape drawShape)
	: CDrawTool(drawShape)
{
	pObj = NULL;
	m_string1="0000";
}

CTextTool::~CTextTool(void)
{
	
}
void CTextTool::OnLButtonDown(CVisDrawView* pView, UINT nFlags, const CPoint& point)
{
	CPoint local = point;
//CPoint  pt=point;
	//申请与视图窗口相关的设备描述表
	CDC* dc=pView->GetDC();
	double x, y;

	

	//把设备坐标转化为逻辑坐标
	pView->ClientToDoc(local);
	//pView->ClientToDoc(pt);



	//把逻辑坐标转化为世界坐标
	pView->ClientToWorld(local,x,y);

	
 dc->SelectStockObject(NULL_PEN);

    //用用笔的颜色绘图
	//dc->SetROP2(R2_COPYPEN);
	dc->SelectStockObject(WHITE_BRUSH);
	//选用空画刷
	//CBrush* pOldbrush=(CBrush*)dc->SelectStockObject(NULL_BRUSH);
	

	m_LMouseDownStep++;

	CRect rect;

	switch(m_LMouseDownStep)
	{
	default:
		break;
	case 1:					//第一次按下鼠标

		//创建矩形对象
		pObj = new CTextObj(CRect(local, CSize(0, 0)));
        rect.TopLeft() = local;
		rect.BottomRight()=local;

		//把第一次按下的鼠标点设置矩形左上角
		pObj->SetPoint(1,x,y);
		pObj->CalcBounds(pView);	
		pView->GetDocument()->Add(pObj);

		pt=point;
		
		break;

	case 2:					//第二次按下鼠标		

			

			//删除以前一个鼠标点为矩形右下角的矩形			
			rect.TopLeft() = lastPoint;
			rect.BottomRight() = prePoint;
		   dc->Rectangle(rect);
		   //dc->TextOut(lastPoint.x,lastPoint.y,"m_string");

			//绘制以当前鼠标点为矩形右下角的矩形
			rect.BottomRight() = point;
			
//CBrush newBrush;
//newBrush.CreateStockObject(WHITE_BRUSH);
//CBrush* pOldbrush=(CBrush*)dc->SelectStockObject(WHITE_BRUSH);

           dc->Rectangle(rect);

			
			pObj->SetPoint(2,x,y);
			//pObj->HitTest(pView, local, TRUE);
//SetCursor(AfxGetApp()->LoadStandardCursor(IDC_IBEAM));
		pObj->CalcBounds(pView);

		


		pObj =NULL;
		m_LMouseDownStep = 0;
		break;
		


	}
     pView->Invalidate();
	//dc->SelectObject(pOldPen);
	//dc->SelectObject(pOldbrush);
		
	lastPoint = point;
	prePoint = point;	

	//释放设备描述表
	pView->ReleaseDC(dc);
}
void CTextTool::OnLButtonUp(CVisDrawView* pView, UINT nFlags, const CPoint& point)
{
	//申请与视图窗口相关的设备描述表
	CDC* dc=pView->GetDC();
	

dc->TextOut(pt.x,pt.y,m_string1);

}

void CTextTool::OnMouseMove(CVisDrawView* pView, UINT nFlags, const CPoint& point)
{
	CPoint local;
	local = point;

	//把设备坐标转化为逻辑坐标
	pView->ClientToDoc(local);

	if(!m_LMouseDownStep) return;


	//申请与视图窗口相关的设备描述表
	CDC* dc=pView->GetDC();
//CPen pen;
//pen.CreatePen(PS_DASH,1,RGB(0,0,192));

//CPen* pOldPen;



    //用用笔的颜色绘图
	//dc->SetROP2(R2_COPYPEN);

	//用屏幕颜色的反色绘图
	dc->SetROP2(R2_NOT);
//CBrush* pOldbrush=(CBrush*)dc->SelectStockObject(NULL_BRUSH);
dc->SelectStockObject(NULL_BRUSH);
	
		CRect rect;
		rect.TopLeft() = lastPoint;
		rect.BottomRight() = prePoint;
		dc->Rectangle(rect);


//dc->SelectStockObject(NULL_PEN);

		rect.BottomRight() = point;
		dc->Rectangle(rect);

	pView->ReleaseDC(dc);
	prePoint = point;
}
void CTextTool::OnLButtonDblClk(CVisDrawView* pView, UINT nFlags, const CPoint& point)
{
}

void CTextTool::CreateObj(CVisDrawView* pView, const CPoint& point)
{
	
}



⌨️ 快捷键说明

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