日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

矩形框拖动

發布時間:2025/3/16 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 矩形框拖动 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>using namespace std; using namespace cv;#define WINDOW_NAME "矩形拖動"Mat src_image; Mat dst_image; Rect rect; Point pt; bool flag_mouse_contained;void Mouse_Callback(int event, int x, int y, int flags, void* userdata) {switch (event){case EVENT_LBUTTONDOWN:if (rect.contains(Point(x, y))){flag_mouse_contained = true;pt = Point(x, y);}break;case EVENT_MOUSEMOVE:if (flag_mouse_contained == true){rect.x += (x - pt.x); //當前鼠標坐標減去上一次回調事件的鼠標坐標rect.y += (y - pt.y);}break;case EVENT_LBUTTONUP:flag_mouse_contained = false;break;}pt = Point(x, y); //記錄當前鼠標坐標用于下一次回調事件 }int main(int argc, char** argv) {flag_mouse_contained = false;src_image = Mat(256, 256, CV_32FC3, Scalar(255, 255, 255));namedWindow(WINDOW_NAME, WINDOW_AUTOSIZE);setMouseCallback(WINDOW_NAME, Mouse_Callback, 0);rect = Rect(50, 50, 50, 50);src_image.copyTo(dst_image); //類似于winform中的Paint事件,只修改dst_image,scr_image保持不變rectangle(dst_image, rect, Scalar(0, 0, 0));imshow(WINDOW_NAME, dst_image);while (1){if (flag_mouse_contained == true){src_image.copyTo(dst_image);rectangle(dst_image, rect, Scalar(0, 0, 0));imshow(WINDOW_NAME, dst_image);}if (waitKey(10) == 27) //等待事件必須大于0,如果小于等于0,則程序會進入無限等待 {return 0;}}//cvDrawRect()return 0; }

?

轉載于:https://www.cnblogs.com/canyeweiwei/p/10504588.html

總結

以上是生活随笔為你收集整理的矩形框拖动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。