cximage mix 注意图像合成时内部坐标

double h1,w1,h2,w2,h3,w3,h4,w4,bpp;
    //getheight(w4,h4);
    CString spath1 = _T("测试1");
    CString spath2 = _T("测试2");
    CString spath3 = _T("测试3");
    CStringArray arraystr;
    arraystr.Add(spath1);arraystr.Add(spath2);arraystr.Add(spath3);


    CxImage img1,img2,img3,img4;
    
    CxImage imgarray[3];
    
    img1.Load("D:\\z1.jpg");
    img2.Load("D:\\z2.jpg");
    img3.Load("D:\\z3.jpg");

    h1=img1.GetHeight();
    w1=img1.GetWidth();

    h2=img2.GetHeight();
    w2=img2.GetWidth();

    h3=img3.GetHeight();
    w3=img3.GetWidth();

    h4 = h1 + h2 + h3;
    w4 = max(w3,max(w1,w2));
    bpp=img1.GetBpp();
    img4.Create(w4,h4,bpp);
    /*img4.MixFrom(img1,0,h1+h2);
    img4.MixFrom(img2,0,h1);
    img4.MixFrom(img3,0,0);*/
    // Y轴上方为负数;
    img4.Mix(img1, CxImage::ImageOpType::OpScreen,0,-h3-h2);
    img4.Mix(img2,CxImage::ImageOpType::OpScreen,0,-h3);
    img4.Mix(img3,CxImage::ImageOpType::OpScreen,0,0);
    if (img4.IsValid())
    {
        for(int idx=0; idx <3; ++idx)
        {
            CString sFormat = arraystr[idx];
            CxImage::CXTEXTINFO  textword;

            img4.InitTextInfo( &textword );

            _stprintf( textword.lfont.lfFaceName,  _T("Times New Roman"));
            textword.lfont.lfCharSet   =  GB2312_CHARSET  ;
            textword.lfont.lfHeight      =20; 
            textword.lfont.lfWeight    =  40 ;
            textword.lfont.lfItalic    =  0 ; 
            textword.lfont.lfUnderline =  0 ; 
            textword.fcolor =  RGB( 0,0,0 );
            textword.bcolor = RGB(   150, 205,205 );
            textword.opaque =  0; //背景
            textword.b_opacity = (float)(0)/(float)100.;  //透明度
            textword.b_round   = (BYTE) 1 ; //四舍五入为背景矩形半径
            //_stprintf( textword.text, _T("水印文字") );
            
            //sFormat.Format(_T("测试%d"),idx+1);
            memset(textword.text,0,sizeof(TCHAR)*255);
            for(int i=0; i < sFormat.GetLength(); ++i)
            {
                textword.text[i] = sFormat.GetAt(i);
            }
            if(idx==0)
            {
                img4.DrawStringEx(0,w1/2.0,h1,&textword);
            }
            if(idx==1)
            {
                img4.DrawStringEx(0,w1/2.0,h1+h2,&textword);
            }
            if(idx==2)
            {
                img4.DrawStringEx(0,w1/2.0,h1+h2+h3,&textword);
            }
            
        }
        
    }

    img4.Save("D:\\z4.jpg",CXIMAGE_FORMAT_JPG);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值