当前位置: 首页 > news >正文

运城建网站网站开发费属于什么费用

运城建网站,网站开发费属于什么费用,广州越秀最新通知,太仓做企业网站文章目录 工程效果重要代码完整代码参考 工程效果 载入图片,并在左侧显示原始图片、二值化图片和灰度图片。 双击左侧的图片控件,可以在右侧的大控件中,显示双击的图片。 初始画面: 载入图片: 双击左侧的第二个控件…

文章目录

  • 工程效果
  • 重要代码
  • 完整代码
  • 参考

工程效果

载入图片,并在左侧显示原始图片、二值化图片和灰度图片。
双击左侧的图片控件,可以在右侧的大控件中,显示双击的图片。

初始画面:
在这里插入图片描述
载入图片:
在这里插入图片描述
双击左侧的第二个控件,显示图片:
在这里插入图片描述
//对图片显示在控件中的位置没有进行优化。

重要代码

主要是用的MFC Image控件。

载入图片:

void CGDITESTDlg::OnBnClickedBtnStart()
{//获取图像文件CFileDialog filedlg(TRUE,_T("png"),NULL,0,TEXT("image Files(*.bmp;*.jpg;*.png)|*.bmp;*.jpg;*.png|all files(*.*)|(*.*)||"),this);filedlg.DoModal();m_cstr_filepath = filedlg.GetPathName();m_cstr_filename = filedlg.GetFileName();if (m_cstr_filepath.IsEmpty() || m_cstr_filename.IsEmpty()){AfxMessageBox(TEXT("打开文件失败"));return ;}	image_origin.Load(m_cstr_filepath);image_binarization.Load(m_cstr_filepath);image_grey.Load(m_cstr_filepath);//获取图像尺寸imgw = image_origin.GetWidth();imgh = image_origin.GetHeight();img_t = imgw / imgh;//根据图像尺寸,调整控件客户区尺寸比例CRect rect_ctl;m_ctl_pic_origin.GetClientRect(&rect_ctl);float rectw = rect_ctl.Width();float recth = rect_ctl.Height();float rect_t = rectw / recth;if(rect_t < img_t){rect_ctl = CRect(rect_ctl.TopLeft(), CSize(rect_ctl.Width(), rect_ctl.Width() / img_t ));}else{rect_ctl = CRect(rect_ctl.TopLeft(), CSize(rect_ctl.Height() * img_t, rect_ctl.Height()));}//显示图像到控件客户区CDC* pdc = m_ctl_pic_origin.GetDC();m_ctl_pic_origin.SetBitmap(NULL);	image_origin.Draw(pdc->m_hDC, rect_ctl);//图像二值化处理ImageBinarizationProcess(image_binarization);//根据图像尺寸,调整控件客户区尺寸比例CRect rect_ctl_binarization;m_ctl_pic_binarization.GetClientRect(&rect_ctl_binarization);float rectw_ = rect_ctl_binarization.Width();float recth_ = rect_ctl_binarization.Height();float rect_t_ = rectw / recth;if (rect_t_ < img_t){rect_ctl_binarization = CRect(rect_ctl_binarization.TopLeft(), CSize(rect_ctl_binarization.Width(), rect_ctl_binarization.Width() / img_t));}else{rect_ctl_binarization = CRect(rect_ctl_binarization.TopLeft(), CSize(rect_ctl_binarization.Height() * img_t, rect_ctl_binarization.Height()));}//显示图像到控件客户区CDC* pdc_ = m_ctl_pic_binarization.GetDC();m_ctl_pic_binarization.SetBitmap(NULL);image_binarization.Draw(pdc_->m_hDC, rect_ctl_binarization);//图像灰度处理ImageGreyProcess(image_grey);//根据图像尺寸,调整控件客户区尺寸比例CRect rect_ctl_grey;m_ctl_pic_grey.GetClientRect(&rect_ctl_grey);float rectw__ = rect_ctl_grey.Width();float recth__ = rect_ctl_grey.Height();float rect_t__ = rectw / recth;if (rect_t__ < img_t){rect_ctl_grey = CRect(rect_ctl_grey.TopLeft(), CSize(rect_ctl_grey.Width(), rect_ctl_grey.Width() / img_t));}else{rect_ctl_grey = CRect(rect_ctl_grey.TopLeft(), CSize(rect_ctl_grey.Height() * img_t, rect_ctl_grey.Height()));}//显示图像到控件客户区CDC* pdc__ = m_ctl_pic_grey.GetDC();m_ctl_pic_grey.SetBitmap(NULL);image_grey.Draw(pdc__->m_hDC, rect_ctl_grey);isLoadedImage = true;m_ctl_pic_origin.ReleaseDC(pdc);m_ctl_pic_binarization.ReleaseDC(pdc);m_ctl_pic_grey.ReleaseDC(pdc);
}

图像二值化处理:
算法来源:C++MFC打开图片、彩图,以及对图像进行简单算法处理

void CGDITESTDlg::ImageBinarizationProcess(CImage &image)
{BYTE* pimagedata = (BYTE*)image.GetBits();	//获取到图片内存点的位置int width = image.GetWidth();int height = image.GetHeight();int pit = image.GetPitch();//图像每行字节数int bytes_per_pixel = image.GetBPP() / 8; //获取每像素的位数除以8得到每个像素占的字节数std::vector<int> gray(256); //初始化时自动存0,用来存放256种颜色出现的次数for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){gray.at((int)*(pimagedata + pit * i + bytes_per_pixel * j)) += 1;}}int max = 0;int sec = 0;int localmax = 0;int localsec = 0;for (int i = 0; i < 256; i++){if (gray[i] > max){max = gray[i];localmax = i;}}for (int i = 0; i < 256; i++){if (gray[i] > sec && abs(i - localmax) > 10){sec = gray[i];localsec = i;}}int mid = (localmax + localsec) / 2;for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){if ((int)(*(pimagedata + pit * i + j * bytes_per_pixel)) < mid){*(pimagedata + pit * i + j * bytes_per_pixel) = 0;*(pimagedata + pit * i + j * bytes_per_pixel + 1) = 0;*(pimagedata + pit * i + j * bytes_per_pixel + 2) = 0;}else{*(pimagedata + pit * i + j * bytes_per_pixel) = 255;*(pimagedata + pit * i + j * bytes_per_pixel + 1) = 255;*(pimagedata + pit * i + j * bytes_per_pixel + 2) = 255;}}}
}

灰度处理:
算法来源:C++MFC打开图片、彩图,以及对图像进行简单算法处理

void CGDITESTDlg::ImageGreyProcess(CImage& image)
{BYTE* pimagedata = (BYTE*)image.GetBits();	//获取到图片内存点的位置int width = image.GetWidth();int height = image.GetHeight();int pit = image.GetPitch();//图像每行字节数int bytes_per_pixel = image.GetBPP() / 8; //获取每像素的位数除以8得到每个像素占的字节数for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){*(pimagedata + pit * i + j * bytes_per_pixel) *= 0.114;*(pimagedata + pit * i + j * bytes_per_pixel + 1) *= 0.587;*(pimagedata + pit * i + j * bytes_per_pixel + 2) *= 0.299;}}}

双击左侧控件的响应:
在这里插入图片描述

void CGDITESTDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{if (!isLoadedImage) //如果没有加载图片,则不会执行后续代码return;//未使用,仅测试CPoint ptCursor;GetCursorPos(&ptCursor);//获取执行此函数时的鼠标位置,屏幕坐标ClientToScreen(&point); //point是双击时的鼠标位置,坐标系是窗口客户区,所以要转换成屏幕坐标//未使用,仅测试CPoint ptCursor1(GetCurrentMessage()->pt); //双击时的鼠标位置,屏幕坐标GetDlgItem(IDC_PIC_ORIGIN)->GetWindowRect(&rc_origin);//控件的rect,屏幕坐标if (rc_origin.PtInRect(point))//如果右键在picture control区域抬起则放大显示灰度图片{CRect rect_ctl;m_ctl_pic_dsp.GetClientRect(&rect_ctl);float rectw = rect_ctl.Width();float recth = rect_ctl.Height();float rect_t = rectw / recth;if (rect_t < img_t){rect_ctl = CRect(rect_ctl.TopLeft(), CSize(rect_ctl.Width(), rect_ctl.Width() / img_t));}else{rect_ctl = CRect(rect_ctl.TopLeft(), CSize(rect_ctl.Height() * img_t, rect_ctl.Height()));}CDC* pdc = m_ctl_pic_dsp.GetDC();m_ctl_pic_dsp.SetBitmap(NULL);image_origin.Draw(pdc->m_hDC, rect_ctl);m_ctl_pic_dsp.ReleaseDC(pdc);return;}GetDlgItem(IDC_PIC_PROCESS)->GetWindowRect(&rc_binarization);if (rc_binarization.PtInRect(point))//如果右键在picture control区域抬起则放大显示灰度图片{CRect rect_ctl;m_ctl_pic_dsp.GetClientRect(&rect_ctl);float rectw = rect_ctl.Width();float recth = rect_ctl.Height();float rect_t = rectw / recth;if (rect_t < img_t){rect_ctl = CRect(rect_ctl.TopLeft(), CSize(rect_ctl.Width(), rect_ctl.Width() / img_t));}else{rect_ctl = CRect(rect_ctl.TopLeft(), CSize(rect_ctl.Height() * img_t, rect_ctl.Height()));}CDC* pdc = m_ctl_pic_dsp.GetDC();m_ctl_pic_dsp.SetBitmap(NULL);image_binarization.Draw(pdc->m_hDC, rect_ctl);m_ctl_pic_dsp.ReleaseDC(pdc);return;}GetDlgItem(IDC_PIC_PROCESS2)->GetWindowRect(&rc_grey);if (rc_grey.PtInRect(point))//如果右键在picture control区域抬起则放大显示灰度图片{CRect rect_ctl;m_ctl_pic_dsp.GetClientRect(&rect_ctl);float rectw = rect_ctl.Width();float recth = rect_ctl.Height();float rect_t = rectw / recth;if (rect_t < img_t){rect_ctl = CRect(rect_ctl.TopLeft(), CSize(rect_ctl.Width(), rect_ctl.Width() / img_t));}else{rect_ctl = CRect(rect_ctl.TopLeft(), CSize(rect_ctl.Height() * img_t, rect_ctl.Height()));}CDC* pdc = m_ctl_pic_dsp.GetDC();m_ctl_pic_dsp.SetBitmap(NULL);image_grey.Draw(pdc->m_hDC, rect_ctl);m_ctl_pic_dsp.ReleaseDC(pdc);return;}CDialogEx::OnLButtonDblClk(nFlags, point);
}

以上是通过窗口的双击时间回调函数,判断双击时鼠标的坐标,是否在控件的坐标Rect中,如果是,则执行对应代码。

也可以把双击的空间的notify属性设置为true,然后再时间中设置双击消息回调函数。
在这里插入图片描述
在这里插入图片描述

完整代码

MFC简单的图片处理工程-Gitee

参考

C++MFC打开图片、彩图,以及对图像进行简单算法处理

http://www.yayakq.cn/news/690434/

相关文章:

  • 江门模板建站系统网站建设开发费入什么科目
  • 基础展示营销型型网站做餐饮连锁加盟如何选网站推广
  • 江西建设厅培训网站做网站多少钱赚钱吗
  • 邹城网站建设v556wordpress选项卡
  • 网站开发维护运维免费的企业黄页网站永久免费
  • 中山专业门户网站制作平台南宁建筑网站
  • 百度推广整体优化网站2345网址大全浏览器下载
  • 专门做土特产的网站说说刷赞网站推广
  • 装修网站平台有哪些北京建设网网站
  • 福清可以做宣传的网站如何用php做网站
  • 做问卷调查用哪个网站网站播放视频速度优化
  • 做网站的绿色背景图ps怎么做网站导航
  • 个人站长做什么网站好安徽注册公司网上申请入口
  • 网站如何兼容ie6昆明做网站建设的公司排名
  • 惠安网站建设费用wordpress登录地址修改密码
  • 在线制作网站免费软件工程专业考研科目
  • 国外家居设计网站如何通过建设网站赚钱
  • dede 手机网站wordpress推广得积分
  • 在线制作表白网站做网站要切图吗
  • 东莞网站推广定制公司网站建设调研报告的前言
  • 网站模板图wordpress setup-config.php空白
  • 免费看电视剧的网站2021wordpress博客数据库50m够用吗
  • 做国外网站的零售广州网站排名推广公司
  • 扬州建设工程信息网站网站开发怎么学
  • 海宁市建设局官方网站6大型网站技术方案
  • 网站建设的技术方案模板网站页脚怎么做
  • 怎么做阿里巴巴国际网站企业网站建立意义何在
  • 建设网站的实验目的乐清市网站建设哪家性价比高
  • 山西网站建设哪家好南通通明建设监理有限公司网站
  • 建网站的注意事项响应式网站建设特色