[MFC] 将像素坐标点缩放,准确的画在所在控件的图片上

简介: [MFC] 将像素坐标点缩放,准确的画在所在控件的图片上

描述:将点画在图片时候,当点比较大的时候,需要将图片所在的控件放大,才能显示在图片上,而且显示的位置也不对,没改一次图片大小,画的点就会换一次位置,原因是坐标是相对于图片的像素大小而言的,也就是像素坐标。要想在mfc控件上显示准确的坐标,一种方法是将控件放大到和图片像素大小一下(显然不靠谱),而另一种方法就需要将坐标进行一个缩放了。

缩放的原理:

只需要将图片坐标系转换成控件坐标系即可,可通过公式控件宽/图片宽=x“/x=y”/y, 即可求出缩放后的坐标(x“,y”),而图片宽,控件宽能求,(x,y)已知。

代码(根据点坐标,在图片上画点):

//获取控件尺寸和位置
  CRect rectCtrl;
  CStatic *p = (CStatic*)GetDlgItem(IDC_STATIC3);
  //p->MoveWindow(100, 100, 100, 100);//更改控件大小并移动其到指定位置
  p->GetWindowRect(rectCtrl);
  this->ScreenToClient(rectCtrl);
  //GetDlgItem(IDC_STATIC_TEST)->GetClientRect(rectCtrl);
  int width =  rectCtrl.Width();
  int height =  rectCtrl.Height();
  OnBnClickedButton1();
  //获取图片尺寸(pic为图片的类型)
    int cx = pic.GetWidth();
    int cy = pic.GetHeight();
    //开始画
  OnBnClickedButton2();
  CDC *pDC = m_pic.GetWindowDC();
  CPen pen(PS_SOLID,4,RGB(255,0,0));
  pDC->SelectObject(&pen);
  //point.x ==col
  //point.y ==row
  int i=0;
  int j=0;
  for(;i<5,j<5;i++,j++)
  {
  //将halcon类型的坐标转换成double类型,画点
  double ti = hv_MatchingCol[i].D(); 
  double tj = hv_MatchingRow[j].D();
  //主要转换过程
  pDC->Ellipse((ti/cx)*width,(tj/cy)*height,(ti/cx)*width+1,(tj/cy)*height+1);
  }

效果:

目录
相关文章
SwiftUI—如何对图像视图进行缩放和旋转
SwiftUI—如何对图像视图进行缩放和旋转
905 0
SwiftUI—如何对图像视图进行缩放和旋转
|
6月前
|
机器学习/深度学习 前端开发 算法
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(二)
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(二)
118 0
|
6月前
|
存储 前端开发 JavaScript
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(一)
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(一)
598 0
|
算法 定位技术 C#
C#开发:不规则裁切图片
C#开发:不规则裁切图片
163 0
|
计算机视觉
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
十一、理解纹理坐标
纹理坐标就是纹理与图形的映射关系,图形中每个顶点都会关联一个纹理坐标,表示顶点需要从该位置读取纹理图像的数据。
490 0
十一、理解纹理坐标
|
JavaScript 前端开发 流计算
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小
168 0
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小
|
前端开发 Android开发
【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )
【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )
229 0
【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )
|
Java Maven
thumbmailator组件对图像的使用缩放、裁剪、旋转、格式钻换
thumbmailator组件对图像的使用缩放、裁剪、旋转、格式钻换
157 0
|
存储
opencv3寻找最小包围矩形在图像中的应用-滚动条
1 #include 2 #include 3 #include 4 5 using namespace cv; 6 using namespace std; 7 8 int g_nMinThred = 128, g_nMaxThred = 255; 9 i...
1419 0