找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 232|回复: 1

soui实现弧形文本

[复制链接]
  • TA的每日心情

    昨天 08:16
  • 签到天数: 228 天

    [LV.7]常住居民III

    2

    主题

    0

    回帖

    3860

    积分

    论坛元老

    积分
    3860
    发表于 2024-8-1 09:12:37 | 显示全部楼层 |阅读模式
    本帖最后由 ceffans 于 2024-8-2 16:03 编辑

    复制代码
    2345截图20240802075813.png

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

  • TA的每日心情

    2024-7-16 14:42
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    0

    主题

    8

    回帖

    211

    积分

    版主

    积分
    211
    发表于 2024-8-1 18:25:41 | 显示全部楼层
    贴上效果图。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|SOUI官方论坛

    GMT+8, 2025-6-25 07:35 , Processed in 0.067114 second(s), 24 queries .

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表