使用soui4实现弧形文本的绘制

弧形文本的绘制跟正常文本绘制有不同的地方是弧形文本需要根据弧度范围内一个一个字符的绘制。
代码如下:

//先计算弧形分块
SStringW sstrContent = L"1234567890A";
int nWords = sstrContent.GetLength();
double dStepAngle = 180.0 / (nWords + 1);
//指定弧形的圆心,此处以绘制文本区域的下边的中点为圆心
CRect rcWindow = GetClientRect();
CPoint ptOrg = rcWindow.CenterPoint();
ptOrg.y = rcWindow.bottom;
for (int i = 0; i < nWords; i++)
{
    double dAngle = i * dStepAngle + dStepAngle;
    SStringW sstrWord = sstrContent.GetAt(i);
    SMatrix matrix;
    matrix.setRotate(dAngle + 270, ptOrg.x, ptOrg.y);  //此处按角度是以90度的方向开始,就给加了270度
    pRT->SetTransform(matrix.fMat, NULL);
    pRT->DrawText(sstrWord, 1, rcWindow, DT_SINGLELINE | DT_CENTER | DT_TOP);
    pRT->SetTransform(SMatrix().fMat);
}

效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值