void CScreenWnd::OnPaint() { CPaintDC dc(this); //获取控件大小 CRect rect; GetClientRect(&rect); //使用黑色填充背景 dc.FillSolidRect(rect, RGB(0, 0, 0)); if (!m_strWord.IsEmpty() && m_strExplain.IsEmpty())//只显示单词不显示释义 { //创建字体 CFont font; font.CreatePointFont(400, _T("Times New Roman")); //选择字体 CFont* pOldFont = dc.SelectObject(&font); //设置接下来绘制的单词的颜色 dc.SetTextColor(RGB(0, 0, 255)); //获取接下来绘制的单词的显示矩形大小 CSize size = dc.GetTextExtent(m_strWord); //计算单词显示的位置 int x = rect.Width() / 2 - size.cx / 2; int y = rect.Height() / 2 - size.cy / 2; //绘制单词 dc.TextOut(x, y, m_strWord); //还原字体 dc.SelectObject(pOldFont); //释放字体 font.DeleteObject(); } if (!m_strWord.IsEmpty() && !m_strExplain.IsEmpty())//同时显示释义和单词 { //创建字体 CFont font; font.CreatePointFont(400, _T("Times New Roman")); //选择字体 CFont* pOldFont = dc.SelectObject(&font); //获取接下来绘制的单词的显示矩形大小 CSize sizeWord = dc.GetTextExtent(m_strWord); //获取接下来绘制的释义的显示矩形大小 CSize sizeExplain = dc.GetTextExtent(m_strExplain); //计算单词显示的位置 int x = rect.Width() / 2 - sizeWord.cx / 2; int y = rect.Height() / 2 - (sizeWord.cy + sizeExplain.cy) / 2; //设置接下来绘制的单词的颜色 dc.SetTextColor(RGB(0, 0, 255)); //绘制单词 dc.TextOut(x, y, m_strWord); //计算释义显示的位置 x = rect.Width() / 2 - sizeExplain.cx / 2; y = y + sizeWord.cy; //设置释义显示的颜色 dc.SetTextColor(RGB(0, 255, 0)); //绘制释义 dc.TextOut(x, y, m_strExplain); //还原字体 dc.SelectObject(pOldFont); //释放字体 font.DeleteObject(); } }
时间: 2024-04-21 17:27:42 浏览: 146
如何建立一个VC++应用程序框架文件:-C++绘图介绍
这段代码是一个 MFC 窗口类中的 OnPaint() 函数,用于绘制窗口的内容。这个窗口类名为 CScreenWnd。这个函数的实现逻辑是:先使用黑色填充整个窗口背景,然后根据成员变量 m_strWord 和 m_strExplain 的值来绘制单词和释义。如果只有单词没有释义,则只绘制单词,如果同时存在单词和释义,则分别绘制它们,并使用不同的颜色进行区分。在绘制之前,先创建一个字体,然后选择这个字体,并设置字体颜色和大小,最后使用 TextOut() 函数进行绘制。
阅读全文