C++ 如何使用fltk显示点?

C++ 如何使用fltk显示点?,c++,fltk,C++,Fltk,在创建了一个窗口并在其中绘制了一些形状之后,我意识到我不能指出一点,而只是将其显示在窗口上。我查了手册,但什么也查不出来。我正在使用fltk 1.3.0。我该怎么做呢?Fltk附带了一系列有用的示例项目。如果查看line_样式示例,可以很容易地将其简化为以下绘图点: #include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/fl_draw.H> class TestWindow : public Fl

在创建了一个窗口并在其中绘制了一些形状之后,我意识到我不能指出一点,而只是将其显示在窗口上。我查了手册,但什么也查不出来。我正在使用fltk 1.3.0。我该怎么做呢?

Fltk附带了一系列有用的示例项目。如果查看line_样式示例,可以很容易地将其简化为以下绘图点:

#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();
}
#包括
#包括
#包括
类TestWindow:公共FLU窗口{
作废提款()
{
荧光颜色(255,0,0);
fl_开始点();
fl_点(50,50);
fl_点(51,51);
fl_端点();
}
公众:
测试窗口(整数w,整数h,常量字符*l=0)
:Fl_窗口(w,h,l){}
};
int main(int argc,字符**argv){
Fl_窗口*窗口=新的测试窗口(200200);
窗口->结束();
窗口->显示(argc、argv);
返回Fl::run();
}
但正如一句忠告,直接在窗口上画一个点很少是明智的做法。大多数情况下,将图像/缓冲区绘制并显示是更好的选择

编辑:

下面是一个将绘图代码放入main函数的示例

#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();
}
#包括
#包括
#包括
类TestWindow:公共FLU窗口{
void draw(){}
公众:
TestWindow(intw,inth,const char*l=0):Fl_窗口(w,h,l){}
};
int main(int argc,字符**argv){
Fl_窗口*窗口=新的测试窗口(200200);
窗口->结束();
窗口->显示(argc、argv);
窗口->将_设置为当前();
荧光颜色(255,0,0);
fl_开始点();
fl_点(50,50);
fl_点(51,51);
fl_端点();
返回Fl::run();
}
您应该注意
make_current

危险:增量更新很难调试和维护


除了将其用于简单的练习之外,这些都不是很好的练习。

根据前面对这个问题的回答,我在文档中找到了以下内容:

fl_开始点() 开始绘制点列表。 使用fl_顶点()将点添加到列表中

这是一些代码,显示了一些要点(我添加了更多代码以真正了解要点):

#包括
#包括
#包括
类绘图:公共FLU窗口{
作废提款(){
fl_开始点();
//为点添加缓冲以便能够看到它们。
//10点10分居中
fl_顶点(9,9);
fl_顶点(9,10);
fl_顶点(9,11);
fl_顶点(10,9);
fl_顶点(10,10);
fl_顶点(10,11);
fl_顶点(11,9);
fl_顶点(11,10);
fl_顶点(11,11);
fl_端点();
荧光灯颜色(荧光灯黑色);
}
公众:
绘图(intw,inth,const char*l=0):Fl_窗口(w,h,l){}
};
int main(int argc,字符**argv){
Fl_窗口*窗口=新图纸(340180);
窗口->结束();
窗口->显示(argc、argv);
返回Fl::run();
}

我是否需要编写一个类来表示该点?我能不能直接进入主楼去?我试图阅读手册并找到一些例子,但我不能完全理解所有这些是如何工作的,能给我一些源代码吗?源代码下载包含了所有的例子。绘图函数及其可用于的上下文。我在main中添加了一个带有绘图代码的示例。
#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();
}