BOOL CXXXDlg::ShowMat(Mat image) { if (image.empty()) return FALSE; CRect rect; int width, height; BITMAPINFO bitmapInfo; BITMAPINFOHEADER* bmiHeader; width = image.cols; height = image.rows; if (width % 4) width = (width + 3) / 4 * 4; cv::Size winSize(width, height); cv::Mat cvImgTmp(winSize, CV_8UC3); if (image.size() != winSize) cv::resize(image, cvImgTmp, winSize); else cvImgTmp = image.clone(); if (cvImgTmp.channels()==1) cvtColor(cvImgTmp, cvImgTmp, CV_GRAY2BGR); GetDlgItem(IDC_STATIC_SHOW_MODE)->GetClientRect(&rect); bmiHeader = &bitmapInfo.bmiHeader; bmiHeader->biSize = sizeof(BITMAPINFOHEADER); bmiHeader->biWidth = cvImgTmp.cols; bmiHeader->biHeight = -cvImgTmp.rows; bmiHeader->biPlanes = 1; bmiHeader->biBitCount = 24; bmiHeader->biCompression = BI_RGB; bitmapInfo.bmiHeader.biSizeImage = 0; bmiHeader->biXPelsPerMeter = GetSystemMetrics(SM_CXSCREEN); bmiHeader->biYPelsPerMeter = GetSystemMetrics(SM_CYSCREEN); bmiHeader->biClrUsed = 0; bmiHeader->biClrImportant = 0; /*使图片在控件中居中全部显示*/ int nWindowW = rect.Width(); //获取窗口宽度 int nWindowH = rect.Height(); //获取窗口高度 int nImageW = cvImgTmp.cols; //获取图片宽度 int nImageH = cvImgTmp.rows; //获取图片高度 float fRatioW = (float)nWindowW / nImageW; float fRatioH = (float)nWindowH / nImageH; int nBeginW , nBeginH, nWeight, nHeight; if (fRatioW < fRatioH) { nBeginW = 0; nBeginH = (int)(nWindowH - (nImageH*fRatioW)) / 2; nWeight = nWindowW; nHeight = (int)(nImageH * fRatioW); } else { nBeginW = (int)(nWindowW - (nImageW*fRatioH)) / 2; nBeginH = 0; nWeight = (int)(nImageW * fRatioH); nHeight = nWindowH; } GetDlgItem(IDC_STATIC_SHOW_MODE)->GetDC()->FillSolidRect(0, 0, nWindowW, nWindowH, COLORREF(0)); GetDlgItem(IDC_STATIC_SHOW_MODE)->GetDC()->SetStretchBltMode(COLORONCOLOR); StretchDIBits(GetDlgItem(IDC_STATIC_SHOW_MODE)->GetDC()->GetSafeHdc() , nBeginW, nBeginH, nWeight, nHeight , 0, 0, nImageW, nImageH, cvImgTmp.data, &bitmapInfo, DIB_RGB_COLORS, SRCCOPY); return TRUE; }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232969.html原文链接:https://javaforall.net
