如何绘制多个矩形 FLTK C++
How to draw multiple rectangles FLTK C++
我正在尝试在 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。问题是我正在尝试将多个矩形形状绘制到 window 并且创建多个盒装以具有多个矩形似乎非常乏味。我试着在 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 构造函数和 window->end()
之间初始化的所有小部件或以相同方式工作的任何其他小部件,例如 Fl_Group
,将成为周围元素的子元素,如果显示其父元素,则将显示。
我不完全确定 Fl_Box
是否是您要查找的内容。我发现 Erco's FLTK Cheat Page 非常有帮助。您可能会在那里找到解决问题的灵感和其他方法。
我正在尝试在 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。问题是我正在尝试将多个矩形形状绘制到 window 并且创建多个盒装以具有多个矩形似乎非常乏味。我试着在 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 构造函数和 window->end()
之间初始化的所有小部件或以相同方式工作的任何其他小部件,例如 Fl_Group
,将成为周围元素的子元素,如果显示其父元素,则将显示。
我不完全确定 Fl_Box
是否是您要查找的内容。我发现 Erco's FLTK Cheat Page 非常有帮助。您可能会在那里找到解决问题的灵感和其他方法。