135上位机VC MFC输出动态多彩的文字方法
135上位机VC MFC输出动态多彩的文字方法
功能展示
程序界面文字一般都是黑白静态显示的,我们当前例程,实现动态且各种颜色变幻输出文本功能,点击动起来,文字霓虹灯效果动态显示,且会跟随鼠标移动,点击静一静,停止文字特效,效果如图; 要点提示 文字的霓虹灯般动态效果是使用窗口设备上下文的通道方法来实现的,创建通道后在通道内实现文字颜色的变幻; 实现功能 1.新建基于对话框的应用程序 2.拖拽两个按钮进行定时器的打开与关闭操作void CGkbc8Dlg::OnButton1() { SetTimer(1,250,NULL) ;} void CGkbc8Dlg::OnButton2() {KillTimer(1); } 3.添加一变量CPoint m_Point;用于输出文字的起始点,在鼠标移动消息中赋值void CGkbc8Dlg::OnMouseMove(UINTnFlags, CPoint point) { m_Point=point; CDialog::OnMouseMove(nFlags, point); }
4.添加定时器消息,实现多彩的文字效果; - c8Dlg::OnTimer(UINT nIDEvent)
- {
- CFont Font;
- CDC* pDC = GetDC();
- CRect rect;
- GetClientRect(&rect);
- pDC->FillRect(rect,&CBrush(RGB(0,0,0)));//填充黑色
- Font.CreatePointFont(400,"宋体",pDC);
- pDC->SelectObject(&Font);
-
- pDC->BeginPath();
- pDC->SetBkMode(TRANSPARENT);
- pDC->TextOut(m_Point.x,m_Point.y,"动态多彩文字");
- pDC->EndPath();
- pDC->SelectClipPath(RGN_COPY);
- pDC->AbortPath();
-
复制代码- Font.DeleteObject();
- //
- int R,G,B;
- for(int i=0;i<rect.Height();i=i+5)
- {
- R = rand()/2;
- G = rand()/2;
- B = rand()/2;
- CPen pen;
- pen.CreatePen(PS_SOLID,5,RGB(255*R,255*G,255*B));
- pDC->SelectObject(&pen);
- pDC->MoveTo(rect.Width(),i);
- pDC->LineTo(0,i);
- pen.DeleteObject();
- }
- CDialog::OnTimer(nIDEvent);
- }
复制代码我们来演示下功能实现的整个过程
|