使用 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
定义的,它也应该工作,但为什么它不适用于 Circle
和 Ellipse
?
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++ 不适用于圆形的主要内容,如果未能解决你的问题,请参考以下文章