如何等待多次鼠标点击

c++ How to wait for multiple mouse clicks

本文关键字:鼠标 何等待 等待      更新时间:2023-10-16

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

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

然后我想让用户选择颜色,输入他的选择(假设是红色),然后将红色的定义传递到图像中。

有谁能帮忙吗?!

如果您知道如何检测鼠标按钮何时被单击,则可以存储有关该单击的信息以供以后使用。例如,您可以在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]
        }        
    }
}