c ++如何等待多次鼠标点击

时间:2014-05-20 15:11:28

标签: c++ cimg

我想在CImg库中绘制一个Triangle。但是,我不知道如何编写允许我使用三次鼠标点击绘制三角形的代码。 文档中的代码是:

 while (!main_disp.is_closed() && !draw_disp.is_closed()) 
{
main_disp.wait();
if (main_disp.button() && main_disp.mouse_y()>=0)

http://cimg.sourceforge.net/reference/group__cimg__tutorial.html

但是只需点击一下鼠标,我就可以成功实现在鼠标点击上绘制一个圆圈。但是对于我来说,要做三次鼠标点击已经证明是困难的。

我也有输入我想要的颜色的问题。我写了红色例如:

const unsigned char red[] = {250, 0, 0};

然后我希望用户选择哪种颜色,输入他的选择(假设它是红色),然后将红色定义传递给图像。

任何人都可以提供帮助吗?!

1 个答案:

答案 0 :(得分:3)

如果您知道如何检测单击鼠标按钮的时间,则可以存储有关该单击的信息以供日后使用。例如,您可以将之前的鼠标点击存储在deque

struct point
{
    int x,y;
};

...

std::deque<point> clicks;

while (!main_disp.is_closed() && !draw_disp.is_closed()) 
{
    main_disp.wait();
    if (main_disp.button())
    {
        clicks.push_front({mouse_disp.mouse_x(), mouse_disp.mouse_y()});

        if (clicks.size() >= 3)
        {
            // draw a triangle using clicks[0], clicks[1] and clicks[2]
        }        
    }
}