www.gusucode.com > VC++开发的电路板画图设计软件源代码源码程序 > VC++开发的电路板画图设计软件源代码源码程序\code\Text.cpp
//Download by http://www.NewXing.com // Text.cpp: implementation of the CText class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "pointtest.h" #include "Text.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CText::CText(int nType,CBaseList* pBaseList) : CBase(ID_TEXT,pBaseList) { Content_Of_Ob = ""; m_bMoving = FALSE; } CText::CText(CBaseList* pBaseList) : CBase(ID_TEXT,pBaseList) { Content_Of_Ob = ""; m_bMoving = FALSE; } CText::~CText() { } int CText::PtInOb(CPoint point) { BOOL result = FALSE; if(Size_Of_Ob.PtInRect(point)){ m_bMoving = FALSE; result = TRUE; } return result; } void CText::OffSet(CSize size) { Size_Of_Ob.OffsetRect(size); } void CText::Draw(CDC* pDC)//draw through pdc { int a,b,c,d,mode; COLORREF oldcolor; // Count_Size(pDC,Content_Of_Text); a = Size_Of_Ob.Width()+50; b = Size_Of_Ob.Height()+20; c = Size_Of_Ob.left; d = Size_Of_Ob.top; if(m_iSelected){ if(m_bMoving){ oldcolor = pDC->SetTextColor(RGB(0,0,0)); }else{ pDC->PatBlt(c,d,a,b,DSTINVERT); oldcolor = pDC->SetTextColor(RGB(255,255,255)); } }else{ oldcolor = pDC->SetTextColor(RGB(0,0,0)); } /*****do what you want*****/ mode = pDC->SetBkMode(TRANSPARENT); Draw_Text(pDC,Content_Of_Ob,c,d); pDC->SetBkMode(mode); pDC->SetTextColor(oldcolor); } void CText::TextMyOut1(CDC* pDC,int xx,int yy,CString string) { LOGFONT logFont; logFont.lfHeight = 35;//31名字 logFont.lfWidth = 7; logFont.lfEscapement = 0; logFont.lfOrientation = 0; logFont.lfWeight = FW_NORMAL;//FW_DEMIBOLD;// logFont.lfItalic = 0; logFont.lfUnderline = 0; logFont.lfStrikeOut = 0; logFont.lfCharSet = ANSI_CHARSET; logFont.lfOutPrecision = OUT_DEFAULT_PRECIS; logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; logFont.lfQuality = PROOF_QUALITY; logFont.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN; strcpy(logFont.lfFaceName, "仿宋_GB2312"); CFont font; font.CreateFontIndirect(&logFont); CFont* oldFont = pDC->SelectObject(&font); pDC->TextOut(xx,yy,string); pDC->SelectObject(oldFont); } void CText::Draw_Text(CDC* MemDC,CString text,int a ,int b) { CString tempString; CString string; CString findstring("\n" ); CRect aa = Size_Of_Ob; int hang = 0,j = 0,line = 0,lie = 0; string = text; if(!string.IsEmpty()){ line = string.GetLength(); j = string.Find( findstring,0 ); while(j != -1){ hang = j; tempString = string.Left( j-1 ); string = string.Right( line-j-1 ); line = line-j-1; j = string.Find( findstring ); if(hang<j) hang = j; TextMyOut1(MemDC, a,lie*17+b,tempString); lie++; } if((j == -1)&&(hang != 0)) TextMyOut1(MemDC,a,lie*17+b,string); else if((j == -1)&&(hang == 0)) TextMyOut1(MemDC,a,b,string); //Size_Of_Text = CRect(aa.left,aa.top,aa.left+hang*10,aa.top+lie*15); } }