我在我的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
定义的,它也应该有用,但为什么它不适用于Circle
和Ellipse
}?
This是.CPP
和.h
个文件()
答案 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);
}