VC 自绘图形区域,用drawtext和textout显示字体时大小改变不了!
请教,VC 自绘图形区域,显示字体大小改变不了的问题,用了字体结构或字体类定义后,用drawtext和textout显示字符串时,字体基本没变化,想把字体调大点,但是调不大?
请高手们来指点指点!
//.h文件定义 RECT m_drawArea; HDC HdblDC; //绘图缓存 HBITMAP HdblOldBitmap;//.cpp文件void CTestDlg::InitOnPaintInfo(){ m_drawArea.left = m_drawArea .top = 0; m_drawArea.right = PIC_RECT_WIDTH; m_drawArea.bottom = PIC_RECT_HIGHT; HDC dc = ::GetDC (m_hwnd); HdblDC = CreateCompatibleDC(dc); HdblOldBitmap = CreateCompatibleBitmapdc,m_drawArea.right,m_drawArea.bottom); HdblOldBitmap = (HBITMAP)SelectObject(HdblDC, HdblOldBitmap); ::ReleaseDC(m_hwnd, dc);}void CTestDlg::DrawFun(){ RECT r = m_drawArea; CRect rect; HDC hdc = NULL; hdc = ::GetDC(m_hwnd); LOGFONT LogFont; CFont draw_Font;//方式一: NONCLIENTMETRICS nm; ::ZeroMemory(&nm,sizeof(nm)); nm.cbSize = sizeof (nm); VERIFY (SystemParametersInfo(SPI_GETNONCLIENTMETRICS,nm.cbSize,&nm,0)); LogFont = nm.lfCaptionFont; LogFont.lfWeight = FW_BOLD; LogFont.lfHeight = 50; LogFont.lfWidth = 50; draw_Font.CreateFontIndirect(&LogFont);//方式二: draw_Font.CreateFont(200,100,//nHeight,nWidth 0, //int nEscapement, 200, //int nOrientation, 100, //int nWeight, FALSE, //BYTE bItalic, FALSE, //BYTE bUnderline, FALSE, //BYTE cStrikeOut, DEFAULT_CHARSET, //BYTE nCharSet, OUT_CHARACTER_PRECIS, //BYTE nOutPrecision, CLIP_DEFAULT_PRECIS, //BYTE nClipPrecision, DEFAULT_QUALITY, //BYTE nQuality, FIXED_PITCH|FF_MODERN, //BYTE nPitchAndFamily, "隶书" ); CFont* pOldFont2 = (CFont*)SelectObjectHdblDC, &draw_Font); DrawText(HdblDC, str, -1, rect, DT_SINGLELINE|DT_VCENTER|DT_CENTER);//|DT_LEFT TextOut(HdblDC, rect.left, rect.top, str, 1); SelectObject(hdc, pOldFont2); BitBlt(hdc, r.left, r.top, (r.right- r.left), (r.bottom- r.top), HdblDC, r.left, r.top, SRCCOPY); ::ReleaseDC(m_hwnd, hdc);}
void CSDI1View::OnDraw(CDC* pDC){ CSDI1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here LOGFONT logFont = {0}; logFont.lfHeight = -MulDiv(120, pDC->GetDeviceCaps(LOGPIXELSY), 72); _tcscpy_s(logFont.lfFaceName, _T("隶书")); CFont mFont; mFont.CreateFontIndirect(&logFont); CFont *pOldFont = pDC->SelectObject(&mFont); pDC->DrawText(_T("中国"), CRect(0, 0, 500, 500), 0); pDC->SelectObject(pOldFont);}
[解决办法]
lf.lfHeight= height; //字体大小
你把height设成负数试试
[解决办法]
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法