- MAT: variables miembro, estera de almacenamiento de imágenes
- Anchura de los controles de imagen: widthPicCtrl
- anchura: Ancho de la estera de la figura.
- esquina izquierda del control de la imagen: leftTop
- Longitud de los controles de imagen: heightPicCtrl
- altura: alta estera de la figura.
//获取鼠标点击处的像素值
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);
}
Control de la imagen debe estar cerca del borde del área de cliente