创建一个窗口并在其中绘制一些形状后,我意识到我无法指出一个点,只是将其显示在窗口上。我已经搜索了手册,但无法做任何事。我正在使用fltk 1.3.0。我该怎么办?
答案 0 :(得分:0)
Fltk附带了许多有用的示例项目。如果您查看line_style示例,则可以轻松地将其简化为如下所示的绘制点:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/fl_draw.H>
class TestWindow : public Fl_Window {
void draw()
{
fl_color(255, 0, 0);
fl_begin_points();
fl_point(50, 50);
fl_point(51, 51);
fl_end_points();
}
public:
TestWindow(int w, int h, const char *l = 0)
: Fl_Window(w, h, l) {}
};
int main(int argc, char ** argv) {
Fl_Window *window = new TestWindow(200, 200);
window->end();
window->show(argc, argv);
return Fl::run();
}
但是,就像一个建议一样,直接在窗口上绘制单个点很少是明智的选择。在大多数情况下,绘制图像/缓冲区然后显示它们是更好的选择。
编辑:
这是在主要功能中放置绘图代码的示例。
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/fl_draw.H>
class TestWindow : public Fl_Window {
void draw() {}
public:
TestWindow(int w, int h, const char *l = 0) : Fl_Window(w, h, l) {}
};
int main(int argc, char ** argv) {
Fl_Window *window = new TestWindow(200, 200);
window->end();
window->show(argc, argv);
window->make_current();
fl_color(255, 0, 0);
fl_begin_points();
fl_point(50, 50);
fl_point(51, 51);
fl_end_points();
return Fl::run();
}
您应该注意make_current
in the manual
危险:增量更新很难调试和维护!
除了将其用于简单练习之外,这都不是好习惯。
答案 1 :(得分:0)
基于先前对该问题的回答,我在文档中找到了这一点:
fl_begin_points() 开始绘制点列表。 点通过fl_vertex()添加到列表中
这是一些显示一些要点的代码(我添加了更多内容才能真正看到这些要点):
#include <FL/fl_draw.H>
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
class Drawing : public Fl_Window {
void draw(){
fl_begin_points();
//adding cushion to points to be able to see them.
//center at 10,10
fl_vertex(9,9);
fl_vertex(9,10);
fl_vertex(9,11);
fl_vertex(10,9);
fl_vertex(10,10);
fl_vertex(10,11);
fl_vertex(11,9);
fl_vertex(11,10);
fl_vertex(11,11);
fl_end_points();
fl_color(FL_BLACK);
}
public:
Drawing(int w, int h, const char *l = 0) : Fl_Window(w, h, l){}
};
int main(int argc, char **argv){
Fl_Window *window = new Drawing(340,180);
window->end();
window->show(argc, argv);
return Fl::run();
}