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