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

C++ fill color in shapes using FLTK doesn't work for circles

本文关键字:不适用 颜色 适用于 FLTK 使用 填充 C++      更新时间:2023-10-16

我在visual studio 2012编译器上安装了来自FLTK.org的FLTK 1.3.X,并使用PPP书进行C++编程(此)。我的问题是填充一个形状。例如,请遵守以下代码:

#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

这是.CPP.h文件()

可能是你在另一个网站上启动了关于这个问题的线程,我在那里找到了解决方案,但为了帮助其他也在处理这个问题的人,我会发这篇文章。在这里,您可以下载正在运行的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);
}