如何做出像【酷狗】显示歌词的功能(VC++)

如何做出像【酷狗】显示歌词的功能(VC++)

编写思路:

根据字体取得边界,然后作为以画刷的方式,根据歌词所设置的时间有慢有快的画过来。

(1)调用BeginPath()函数来打开设备上下文的路径支架(path bracket).
(2)调用GDI绘图函数来定义径径。使用的函数有:CloseFigure(),ExtTextOut(),LintTo,MoveToEx(),PolyBezier(),PolyBezierTo(),Polygon,Polyline,PloyPolygon(),PolyPolylin(),和TextOut.
(3)调用EndPath()函数结束路径定义。完成路径定义之后,所定义的路径即被同时选进设备描述表,设置描述表中原有的路径对象在调用BeginPath()函数开始路径定义时即被废弃。
(4)使用路径对象。完成路径定义之后,应用程序便可以利用有关GDI函数来使用路径。

StrokePath() 用于绘制路径轮廓
FillPath() 用于填充路径
StrokeAndFillPath() 用于绘制轮廓及填充
PathToRegion() 用于把路径转为区域 --------这个你会很常用的
GetPath() 用于提取路径数据
还有一些不一一列出了。

一般步骤:
准备窗口的DC:
CPainDC dc(this);
dc.SetBkMode(TRANSPARENT);
CRect rc;
GetClientRect(rc);

准备好字体
LOGFONT lf
dc.GetCurrentFont()->GetLogFont(&lf);
CFont font,*POldFont;
lf.lfCharSet=134;
lf.lfHeight=-100;
lf.lfWidth=0;
strcpy(lf.lfFaceName,"隶书");
font.CreateFontIndirect(&lf);
pOldFont=dc.SelectObject(&font);

准备好画刷
CSize sz=dc.GetOutputTextExtent("你要输入出歌词");
CPen pen(PS_SOLD,1,RGB(255,0,0)),*pOldPen; //更改当前画笔
CBrush br(HS_DIAGCROSS,RGB(0,255,255)),*pOldBrush; //更改当前的刷子
pOldBrush=dc.SelectObject(&br);

然后:
dc.BeginPath();
dc.TextOut(rc.right/2-sz.cx/2,rc.bottom/2-sz.cy/2,"你要输入的歌词);
dc.EndPath();
dc.StrokeandFillPath(); --绘制出路径,这就算完成了.
来源:http://topic.csdn.net/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值