溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

AGG第三十六課 gsv_text_outline 渲染環(huán)繞的字符

發(fā)布時(shí)間:2020-06-07 00:07:04 來源:網(wǎng)絡(luò) 閱讀:522 作者:fengyuzaitu 欄目:系統(tǒng)運(yùn)維

  agg::rendering_buffer &rbuf = rbuf_window();

    agg::pixfmt_bgr24 pixf(rbuf);


    typedef agg::renderer_base<agg::pixfmt_bgr24> renderer_base_type;

    renderer_base_type renb(pixf);


    typedef agg::renderer_scanline_bin_solid<renderer_base_type> renderder_scanline_type;

    renderder_scanline_type rensl(renb);


    agg::rasterizer_scanline_aa<> ras;

    agg::scanline_u8 sl;

    ras.reset();


    renb.clear(agg::rgba8(255,255,255));


    agg::ellipse ell(400, 100, 100, 100);

    agg::conv_stroke<agg::ellipse> stroke(ell);

    ras.add_path(stroke);

    agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255, 0, 0));

    ras.reset();


    agg::gsv_text txt;

    agg::trans_single_path transPath;

    transPath.add_path(ell);

    agg::gsv_text_outline<agg::trans_single_path> txtOutLine(txt, transPath);


    txt.flip(true);

    txt.size(10);

    txt.start_point(100, -15);

    txt.space(5);//字符之間的間距

    txt.text("http://fengyuzaitu.blog.51cto.com");

    ras.add_path(txtOutLine);

    agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255, 0, 0));

    ras.reset();


注意:

1 start_point指定的方向不再是真實(shí)的屏幕坐標(biāo),而是相對(duì)于頂點(diǎn)源的起始渲染坐標(biāo),當(dāng)前渲染的橢圓是從橢圓的最右邊的點(diǎn),順時(shí)針開始渲染,第一個(gè)參數(shù)可以理解為在渲染的弧線上距離起點(diǎn)多遠(yuǎn)的路程之后開始渲染字符,其中trans_single_path提供了total_length計(jì)算路徑的長(zhǎng)度,可以方便部署每一個(gè)字符所在的位置(相對(duì)于起點(diǎn)),第二個(gè)參數(shù)是指定字符偏離路徑的寬度,正負(fù)數(shù)值分別是在內(nèi)測(cè)還是外側(cè)進(jìn)行偏離


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI