SOUI官方论坛

 找回密码
 立即注册
查看: 120|回复: 1

使用soui4绘制渐变线条及渐变文字

[复制链接]
  • TA的每日心情
    奋斗
    2022-7-4 09:45
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    59

    主题

    590

    帖子

    5515

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    5515

    突出贡献优秀版主

    发表于 2023-10-9 16:12:06 | 显示全部楼层 |阅读模式
    最近有人要做这两个效果,把demo放上来。
    绘制渐变文字:
    QQ截图20231009161010.png
    [C++] 纯文本查看 复制代码
    void CMainDlg::onBtnDrawString()
    {
    	SWindow *pCanvasWnd = FindChildByName("canvas");
    	if(pCanvasWnd){
    		CRect rc = pCanvasWnd->GetClientRect();
    
    		SAutoRefPtr<IPathS> path;
    		GETRENDERFACTORY->CreatePath(&path);
    		path->addString(L"Hello Soui4",-1,rc.left,rc.top,SFontPool::GetFont(L"size:30",100));
    
    		IRenderTarget *pRT = pCanvasWnd->GetRenderTarget(NULL,GRT_OFFSCREEN);
    		SAutoRefPtr<IBrushS> br;
    		Gra***ntItem items[2];
    		items[0].cr=RGBA(255,0,0,255);
    		items[0].pos=0;
    		items[1].cr=RGBA(0,255,0,255);
    		items[1].pos = 1.0;
    		Gra***ntInfo info;
    		info.type=linear;
    		info.angle=0;
    		pRT->CreateGra***ntBrush(items,2,&info,255,kClamp_TileMode,&br);
    		pRT->SelectObject(br);
    		pRT->FillPath(path);
    		pRT->SelectDefaultObject(OT_BRUSH);
    
    		pCanvasWnd->ReleaseRenderTarget(pRT);
    	}
    }

    绘制渐变线条:
    QQ截图20231009161058.png
    [C] 纯文本查看 复制代码
    void CMainDlg::onBtnDrawCurve()
    {
    	SWindow *pCanvasWnd = FindChildByName("canvas");
    	if(pCanvasWnd){
    		CRect rc = pCanvasWnd->GetClientRect();
    
    		SAutoRefPtr<IPathS> path;
    		GETRENDERFACTORY->CreatePath(&path);
    		path->moveTo(rc.left,rc.CenterPoint().y);
    		path->rCubicTo(100,50,200,-50,300,100);
    
    		IRenderTarget *pRT = pCanvasWnd->GetRenderTarget(NULL,GRT_OFFSCREEN);
    		Gra***ntItem items[2];
    		items[0].cr=RGBA(255,0,0,255);
    		items[0].pos=0;
    		items[1].cr=RGBA(0,255,0,255);
    		items[1].pos = 1.0;
    		Gra***ntInfo info;
    		info.type=linear;
    		info.angle=0;
    
    		SAutoRefPtr<IPenS> pen,oldPen;
    		pRT->CreatePen(PS_SOLID,0,5,&pen);
    		pRT->SelectObject(pen,(IRenderObj**)&oldPen);
    		pRT->DrawGra***ntPath(path,items,2,&info);
    		pRT->SelectObject(oldPen);
    
    		pCanvasWnd->ReleaseRenderTarget(pRT);
    	}
    }
    

    工程代码: Soui4Wizard1.zip (29.6 KB, 下载次数: 4, 售价: 1 SOUI币)

  • TA的每日心情
    奋斗
    2024-3-15 15:43
  • 签到天数: 104 天

    [LV.6]常住居民II

    5

    主题

    47

    帖子

    950

    积分

    04:00化神期

    Rank: 4

    积分
    950
    发表于 2023-10-12 15:32:24 | 显示全部楼层
    感谢大佬的分享
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-18 13:50

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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