14. CVUI 2.7.0 组件:Iarea(官方文档翻译)

官方文档链接:https://dovyski.github.io/cvui/components/iarea/


iarea

cvui::iarea() 创建一个报告鼠标光标活动的交互区域。函数声明如下:

int iarea(int theX, int theY, int theWidth, int theHeight);

theX 是 X 坐标,theY 是 Y 坐标,theWidth 是交互区域的宽度,theHeight 是交互区域的高度。

cvui::iarea() 返回在定义边界内的跟踪交互。返回结果为:

  • cvui::OUT: 当鼠标光标不在 iarea 上
  • cvui::OVER: 当鼠标光标在 iarea 上
  • cvui::DOWN: 当鼠标光标在 iarea 上点击但没有释放
  • cvui::CLICK: 当鼠标光标在 iarea 上点击并且释放时

重要:cvui::iarea() 不会再屏幕上生成任何视觉输出。它时用来作为创建交互的辅助工具。

下面是展示交互区域以及鼠标光标交互的示例。

核心语句

int status = cvui::iarea(30, 50, 90, 90);

cvui::rect(frame, 30, 50, 90, 90, 0xffffff, 0xff000000);

switch (status)
{
case cvui::CLICK:
	std::cout << "Clicked!" << std::endl;	break;
case cvui::DOWN:
	cvui::printf(frame, 150, 60, "Mouse is: DOWN");		break;
case cvui::OVER:
	cvui::printf(frame, 150, 60, "Mouse is: OVER");		break;
case cvui::OUT:
	cvui::printf(frame, 150, 60, "Mouse is: OUT");		break;
default:		break;
}

完整代码

#define CVUI_IMPLEMENTATION
#define CVUI_DISABLE_COMPILATION_NOTICES
#include "cvui.h"

#include <iostream>

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>

#define WINDOW_NAME "CVUI Test"

int main(int argc, char** argv)
{
	cvui::init(WINDOW_NAME);

	cv::Mat frame = cv::Mat(cv::Size(500, 200), CV_8UC3);
	
	while (true)
	{
		int status = cvui::iarea(30, 50, 90, 90);
		
		frame = cv::Scalar(100, 100, 100);
		
		cvui::rect(frame, 30, 50, 90, 90, 0xffffff, 0xff000000);
		
		switch (status)
		{
		case cvui::CLICK:
			std::cout << "Clicked!" << std::endl;	break;
		case cvui::DOWN:
			cvui::printf(frame, 150, 60, "Mouse is: DOWN");		break;
		case cvui::OVER:
			cvui::printf(frame, 150, 60, "Mouse is: OVER");		break;
		case cvui::OUT:
			cvui::printf(frame, 150, 60, "Mouse is: OUT");		break;
		default:		break;
		}

		cvui::imshow(WINDOW_NAME, frame);

		if (cv::waitKey(20) == 27)
			break;
	}

	return 0;
}

输出结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值