Текст поверх картинки - PullRequest
1 голос
/ 25 июня 2019

Можно ли создать текст, отображаемый на картинке с помощью 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) метод, кажется, игнорируется

Есть ли способ поместить два элемента друг на друга вместо одного элемента? Моя цель - нарисовать каплю воды, а затем написать в середине% влажности.

Спасибо

1 Ответ

2 голосов
/ 25 июня 2019

Покажите свое изображение, затем используйте nana::paint::graphics::string, чтобы написать текст поверх изображения.

Это

enter image description here

производится

#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();
}
...