是否可以使用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)
方法似乎被忽略了
有没有一种方法可以使两个元素彼此重叠,而不是一个元素?我的目标是对水滴进行拍照,然后在其中间写下湿度%。
谢谢
答案 0 :(得分:2)
显示图片,然后使用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();
}