【问题标题】:How to make a point appear using fltk?如何使用 fltk 使一个点出现?
【发布时间】:2019-04-07 01:34:03
【问题描述】:

在创建了一个窗口并在其中绘制了一些形状之后,我意识到我不能提出一个点,只是将它显示在窗口上。我已经搜索了手册,但我无法从中做出任何事情。我使用的是 fltk 1.3.0。我该怎么做?

【问题讨论】:

    标签: c++ fltk


    【解决方案1】:

    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_currentin the manual的免责声明

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

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

    【讨论】:

    • 我需要写一个类来表示点吗?我不能直接进入 main() 并直接这样做吗?我试图阅读手册并找到示例,但我无法完全理解所有这些是如何工作的,是否容易给我任何来源?
    • 源代码下载包含所有示例。绘图函数以及它们可以在is well documented 中使用的上下文。我在 main 中添加了一个带有绘图代码的示例。
    【解决方案2】:

    根据之前对这个问题的回答,我在文档中找到了这个:

    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();
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多