图片上的文字
Text over picture
是否可以用 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),label根本不会显示在layout中
我在网上找不到任何关于它的信息。 nana::image::caption(std::string)
方法似乎被忽略了
有没有办法让两个元素相互叠加,代替一个元素?我的目标是画一个水滴,然后在中间写上湿度-%。
谢谢
显示您的图片,然后使用 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();
}
是否可以用 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),label根本不会显示在layout中
我在网上找不到任何关于它的信息。 nana::image::caption(std::string)
方法似乎被忽略了
有没有办法让两个元素相互叠加,代替一个元素?我的目标是画一个水滴,然后在中间写上湿度-%。
谢谢
显示您的图片,然后使用 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();
}