c++ - 如何绘制多个矩形 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 文档。问题是我正在尝试在窗口上绘制多个矩形形状,并且创建多个装箱以便拥有多个矩形似乎非常乏味。我尝试查找很多关于在 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 的 FLTK 作弊页面非常有用。您可能会在那里找到解决问题的灵感和其他方法。
推荐阅读
- c# - Xamarin.Forms.WPF XamlParseException
- javascript - Redirect With Post data (json) and has headers
- cordova - Ionic android build 生成未签名的 apk,但不要安装在我的 android 8.1.0 中
- python - Pyspark 在另一列中的一列中查找模式
- angular - how to open ng-template modal from component?
- python-3.x - Random connection errors with aio_pika after 2 days of running
- datetime - 在兼容的 SQLServer 2014 vs SQLServer2016 中,mssql-jdbc datetime java 类型转换为 datetime2
- android - Android View 上的 Framwork7 Popover 问题
- javascript - How to load a table which sum the values (from database) when clicking the check box. in an onchange function in dropdown
- sql - Oracle 中有 ARRAY_AGG PostgreSQL 函数的类似物吗?