MFC:鼠标点击处显示图像像素

  • mat:成员变量,存放mat图像
  • widthPicCtrl:图像控件的宽度
  • width:mat图的宽
  • leftTop:图像控件的左上角坐标
  • heightPicCtrl:图像控件的长度
  • height:mat图的高

//获取鼠标点击处的像素值
void CCameraLinkTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	//超出图片区域
	if (!mat.empty())
	{
		int pX = int((widthPicCtrl - width) / 2) + leftTop0.x;
		int pX2= int((widthPicCtrl - width) / 2) + leftTop0.x+width;
		int pY = int((heightPicCtrl - height) / 2) + leftTop0.y;
		int pY2= int((heightPicCtrl - height) / 2) + leftTop0.y +height;
        //图片显示的区间
		if (point.x>=pX&&point.x < pX2 && point.y >=pY&& point.y < pY2)
		{
			//获得图形坐标
			uchar pix = imgOf8bit.at<uchar>(point.y - pY, point.x - pX);
			CString x, y, p;
			int tmp = pix;
			x.Format(_T("%d"), point.y - pY);
			y.Format(_T("%d"), point.x - pX);
			p.Format(_T("%d"), pix);
			GetDlgItem(IDC_EDIT1)->SetWindowTextW(x);
			GetDlgItem(IDC_EDIT2)->SetWindowTextW(y);
			GetDlgItem(IDC_EDIT3)->SetWindowTextW(p);
		}
		else
		{
			GetDlgItem(IDC_EDIT1)->SetWindowTextW(NULL);
			GetDlgItem(IDC_EDIT2)->SetWindowTextW(NULL);
			GetDlgItem(IDC_EDIT3)->SetWindowTextW(NULL);
		}
	}
	CDialogEx::OnLButtonDown(nFlags, point);
}

图像控件必须紧贴客户区的上边沿

发布了194 篇原创文章 · 获赞 95 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_41498261/article/details/105030638