我在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文件()

最佳答案

可能是您在另一个找到解决方案的网站上启动了与此问题相关的话题,但是为了帮助其他也对此问题感到挣扎的人,我会发表这篇文章。 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);
}

关于c++ - C++使用FLTK填充形状的颜色不适用于圆形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25549789/

10-09 19:41