使用 FLTK 在形状中填充颜色的 C++ 不适用于圆形

Posted

技术标签:

【中文标题】使用 FLTK 在形状中填充颜色的 C++ 不适用于圆形【英文标题】:C++ fill color in shapes using FLTK doesn't work for circles 【发布时间】:2014-08-28 13:17:12 【问题描述】:

我在我的 Visual Studio 2012 编译器上安装了来自 fltk.org 的 FLTK 1.3.X,并使用 PPP 书籍进行 C++ 编程 (this)。 我的问题是关于填充形状。例如,请注意以下代码:

#include <Simple_window.h>

using namespace Graph_lib;
int main()

    Simple_window win(Point(100,100), 1000, 600, "Binary_tree");
    Graph_lib::Circle c(Point(200,200),50);
    c.set_color(Color::red);
    c.set_fill_color(Color::blue);
    Graph_lib::Ellipse e(Point(100,100),50,30);
    e.set_color(Color::blue);
    e.set_fill_color(Color::red);
    Graph_lib::Rectangle r(Point(250,200),Point(350,300));
    r.set_color(Color::green);
    r.set_fill_color(Color::red);
    win.attach(r);
    win.attach(e);
    win.attach(c);
    win.wait_for_button();

当我运行程序时,所有三个Shapes 都绘制在窗口上,但只有Rectangle 被填写! 为什么? set_color 适用于这三个,显然 set_fill_color 是为所有 Shapes 定义的,它也应该工作,但为什么它不适用于 CircleEllipse

This 是.CPP.h 文件()

【问题讨论】:

没有任何想法!? 这与fltk无关:它与写在fltk之上的graph_lib有关。您从哪里获得 graph_lib 以及您在哪个平台上运行? 我的机器是 Windows 7,编译器是 M Visual Studio 2012。我安装了 FLTK 版本 1.3.2,我认为 Graph_lib 来自它. 花了一段时间才找到 graph_lib - 它来自 Stourstrup 的网站。无论如何,运行你的程序,它会填满圆圈和椭圆。它进入 fl_arci.cxx 例程 Fl_Graphics_Driver::pie 应该填满圆圈。 请问您使用的是什么版本的FLTK? 1.3.2? 【参考方案1】:

可能是您在另一个网站上启动了有关此问题的线程,我在其中找到了解决方案,但是为了帮助也遇到此问题的其他人,我将发布此帖子。 Here 你可以下载 Stroustrup 的工作库。如果不想重写所有文件,只需将Graph.cpp中“Circle::draw_lines()”函数中的代码改成这个,重新编译库即可:

if (fill_color().visibility())     // fill
    fl_color(fill_color().as_int());
    fl_pie(point(0).x,point(0).y,r+r-1,r+r-1,0,360);
    fl_color(color().as_int()); // reset color


if (color().visibility()) 
    fl_color(color().as_int());
    fl_arc(point(0).x,point(0).y,r+r,r+r,0,360);

【讨论】:

以上是关于使用 FLTK 在形状中填充颜色的 C++ 不适用于圆形的主要内容,如果未能解决你的问题,请参考以下文章

达到边界颜色时,填充无法填充整个形状?

FLTK C++ Fl_line 不画

如何绘制不同颜色的填充路径/形状

C++:帮助安装 FLTK

当使用洪水填充算法填充颜色后绘制线条时,填充颜色消失

在 C++ 中使用 FLTK 的简单电话簿