【问题标题】:Text over picture图片上的文字
【发布时间】:2019-06-25 17:55:10
【问题描述】:

是否可以使用 nana 创建显示在图片上的文本?

我试过了

int main() {
  using namespace nana;

  form fm;
  place plc(fm);
  picture pic(fm);
  label lbl(fm, "LBL", true);

  pic.load(paint::image("xxx.png"));
  pic.caption("PIC");
  pic.align::center, align_v::center);

  lbl.transparent(true);
  lbl.text_align(align::center, align_v::center);

  plc.div("<<here>>");
  plc["here"] << pic;
  plc["here"] << lbl; // (1)

  plc.collocate();
  lbl.move(pic.pos());

  fm.show();
  exec();
}

但是当 nana 为布局中的 2 个元素创建一个网格时,它都向左移动。不添加,所以删除(1),布局中根本不会显示标签。

我在网上找不到任何关于它的信息。 nana::image::caption(std::string) 方法似乎被忽略了

有没有办法让两个元素在一个元素的位置上相互叠加?我的目标是制作水滴的图片,然后在中间写下湿度百分比。

谢谢

【问题讨论】:

    标签: c++ nana


    【解决方案1】:

    显示您的图片,然后使用nana::paint::graphics::string 在图片顶部写下您的文字。

    这个

    制作
    #include <iostream>
    #include <nana/gui.hpp>
    #include <nana/gui/widgets/picture.hpp>
    #include <nana/gui/widgets/label.hpp>
    
    int main()
    {
        using namespace nana;
    
        paint::image I("xxx.bmp");
        if (I.empty())
        {
            msgbox err("Error");
            err << "Cannot read image";
            err.show();
            exit(1);
        }
    
        form fm({50,50,400,700});
    
        drawing dw(fm);
        dw.draw([&I](paint::graphics& g)
        {
            I.paste(g, {0,0} );
            g.string({200,400}, "THIS IS A TEST", colors::black);
        });
    
        fm.show();
        exec();
    }
    

    【讨论】:

    • 您能解释一下吗?我在不同的地方试过drawing dw(fm); dw.draw([&amp;pic](paint::graphics&amp; g) {g.string(pic.pos(), "hi", colors::black);});,但它不会出现
    猜你喜欢
    • 1970-01-01
    • 2021-01-07
    • 2012-12-18
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多