原文请看《Win32使用剪切区域实现酷狗动态歌词特效:动态歌词颜色滚动覆盖效果》直接看代码:
OnPaint函数:
PAINTSTRUCT ps;
TEXTMETRIC tm;
CDC *pDC=BeginPaint(&ps);
HRGN hrgn=CreateRectRgn(200+i,50,200+i+20,100);
CombineRgn(hRgn,hRgn,hrgn,RGN_OR);
i+=10;
DeleteObject(hrgn);
pDC->SelectObject(hFont);
pDC->SetTextColor(RGB(0,0,255));
pDC->TextOutW(50,50,txt);
pDC->GetTextMetrics(&tm);
pDC->SelectObject(hRgn);
pDC->SetTextColor(RGB(255,0,0));
pDC->TextOutW(50,50,txt);
EndPaint(&ps);
void C歌词滚动Dlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
Invalidate();
CDialogEx::OnTimer(nIDEvent);
}
int C歌词滚动Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
SetTimer(1,1000,NULL);
hRgn=CreateRectRgn(50,50,200,100);
memset(&logfont,0,sizeof(logfont));
logfont.lfHeight=50;
logfont.lfWeight=200;
hFont=CreateFontIndirect(&logfont);
GetClientRect(&rect);
return 0;
}
头文件中:
HRGN hRgn;
INT i;
LOGFONT logfont;
CRect rect;
HFONT hFont;
CString txt;