gpt4 book ai didi

c++ - 如何绘制多个矩形 FLTK C++

转载 作者:行者123 更新时间:2023-11-30 04:45:56 26 4
gpt4 key购买 nike

我正在尝试在 fltk 中创建一个程序,我遵循了这个例子

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>

int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(340,180);
Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labelsize(36);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}

来自 FLTK docs .问题是我试图在窗口上绘制多个矩形形状,创建多个盒装以拥有多个矩形似乎非常乏味。我试着查找了很多关于在 FLTK 上绘制形状的教程,但我找不到任何足够简单的东西来展示给我看。

到目前为止我的代码看起来像这样

#include <FL/Fl.H>
#include <FL/Fl_Widget.H>
#include <FL/Fl_Window.H>
// #include <FL/fl_draw.H>
#include <iostream>

int main() {
Fl_Window *window = new Fl_Window(900, 600);
window->position(0, 0);
window->color(FL_BLACK);
window->end();
window->show();
while (1) {
int ev = Fl::event();
if (ev == FL_SHORTCUT) {
if (Fl::event_key() == FL_Escape)
break;
}
Fl::check();
}
return 0;
}

我想在循环内(连续)实现绘图。

最佳答案

作为一个重要的旁注:你真的应该考虑使用 Fl::run() 而不是你的自定义 while 循环,我遇到了很多与你类似的方法的问题。

现在,回答你的问题:

举个例子,将 Box 创建包装在一个循环中。例如,您可以使用索引为每个 Box 分配不同的位置。

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>

int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(340,500);

// 3 Fl_Boxes in a loop
for (int i = 0; i < 3; ++i) {
Fl_Box *box = new Fl_Box(20, 40 + i*120, 300, 100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labelsize(36);
box->labeltype(FL_SHADOW_LABEL);
}
window->end();
window->show(argc, argv);
return Fl::run();
}

您可以在构造函数框中使用公式 20, 40 + i*120, 300, 100 来控制布局。您必须根据您的要求进行调整。

使用 FLTK 的一个基本规则是:您在窗口构造函数和 window->end() 或以相同方式工作的任何其他小部件之间初始化的所有小部件,例如 Fl_Group,将成为周围元素的子元素,如果显示其父元素,则将显示。

我不完全确定 Fl_Box 是否是您要查找的内容。我找到了 Erco's FLTK Cheat Page非常有帮助。您可能会在那里找到解决问题的灵感和其他方法。

关于c++ - 如何绘制多个矩形 FLTK C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57037943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com