使用FLTK在形状中填充C ++颜色对圆圈不起作用

时间:2014-08-28 13:17:12

标签: c++ fltk

我在我的visual studio 2012编译器上从fltk.org安装了FLTK 1.3.X,并使用PPP书进行C ++编程(this)。 我的问题是关于填充Shape。例如,请遵守以下代码:

#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个文件()

1 个答案:

答案 0 :(得分:0)

可能是你在我找到解决方案的另一个网站上开始关于这个问题的线程,但是为了帮助其他人,他们也在努力解决这个问题,我将发表这篇文章。 Here您可以下载有效的Stroustrup库。如果您不想重写所有文件,只需更改函数中的代码&#34; Circle :: draw_lines()&#34;在Graph.cpp中,并重新编译库:

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);
}