客户端测量输出文章的宽高方案

来源:互联网 发布:淘宝网广场舞服装套装 编辑:程序博客网 时间:2024/04/30 14:11

CFont font;  

CFont * pOldFont;  

LOGFONT MyFont;  
memset(&MyFont,0,sizeof(LOGFONT));
MyFont.lfHeight = 23;  
MyFont.lfWidth = 16;  
MyFont.lfWeight = FW_NORMAL;  
MyFont.lfCharSet = GB2312_CHARSET;  
MyFont.lfQuality = DEFAULT_QUALITY;
wcscpy(MyFont.lfFaceName,L"微软雅黑");
font.CreateFontIndirect(&MyFont); 

dc.SelectObject(font);

CString str(L"sdfsdfsdfsdffdfdsffdsfsdf进程,如果不dfsdfsdfdfsdfdsfsdffdsf希望运行这gfgdfgdfg个程序,可以清理");

Gdiplus::Graphics gs(dc.m_hDC);
Gdiplus::RectF stringRect;
Gdiplus::Font myFont(L"微软雅黑",12,0,Gdiplus::UnitPixel);
Gdiplus::RectF layoutRect(0,0,206-24,200);
 Gdiplus::StringFormat format;
format.SetAlignment((Gdiplus::StringAlignment)0);
format.SetLineAlignment((Gdiplus::StringAlignment)0 ); 
format.SetTrimming( Gdiplus::StringTrimmingEllipsisCharacter );
gs.SetSmoothingMode( Gdiplus::SmoothingModeHighQuality );
gs.SetTextRenderingHint( (Gdiplus::TextRenderingHint)Gdiplus::TextRenderingHintClearTypeGridFit );
gs.MeasureString( (LPCTSTR)str,str.GetLength(), &myFont, layoutRect, &format, &stringRect );  
Gdiplus::RectF outRect(230,100,206-24,200);
Gdiplus::Color color(255,0,0,0);
Gdiplus::Color colorR(255,255,0,0);
Gdiplus::SolidBrush brush(color);
Gdiplus::SolidBrush brushR(colorR);
gs.FillRectangle(&brushR,230.0,100.0,stringRect.Width,stringRect.Height);
gs.DrawString( str, str.GetLength(), &myFont, outRect, &format, &brush );

方法二:

RECT rc = {0,0,100,400};
dc.SetBkMode( TRANSPARENT );
dc.DrawText( L"四点多法斯蒂芬撒地方键啊", &rc,  DT_CALCRECT|DT_LEFT|DT_TOP|DT_WORDBREAK );
SIZE size;   
dc.FillRect( CRect(100,100,100+rc.right-rc.left,100+rc.bottom-rc.top), &CBrush(RGB(255,0,0)));
dc.DrawText( L"四点多法斯蒂芬撒地方键啊", CRect(100,100,200,500), DT_LEFT|DT_TOP|DT_WORDBREAK);

0 0