如何用鼠标获取Picture Control 控件中图片的像素位置?

gerry2000 2019-06-26 08:18:31
Picture控件中的图片是使用 CvvImage::DrawToHDC 显示的。
我现在要通过鼠标点击Picture控件中的位置,来获取Picture控件中图片的像素位置。

例如我的图片是640*480 像素。 在Picture控件中显示, Picture控件可能是700*500;
鼠标点击时我可以获得Picture控件的位置, 但如何才能获得Picture控件中图片(640*480)的像素位置。


Picture控件和图片会有什么用的映射关系呢?
...全文
515 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
相门三少 2019-07-29
  • 打赏
  • 举报
回复
将图片的data读入buffer中,然后根据鼠标指向的位置,从buffer中对应位置读出pixel值
worldy 2019-07-03
  • 打赏
  • 举报
回复
图片写入DC后,你想访问图片内容,你必须BitBlt出来(设备DC---> 内存DC)然后访问内存
zgl7903 2019-07-02
  • 打赏
  • 举报
回复
绿色盒子 2019-06-27
  • 打赏
  • 举报
回复
好像没啥好办法,还是用比列关系算个差不多的吧,差距不会很大的
gerry2000 2019-06-27
  • 打赏
  • 举报
回复
例如x坐标可以640/700*x来得到图像的大概坐标,到我觉得应该有更准确的方法
schlafenhamster 2019-06-27
  • 打赏
  • 举报
回复
"图片像素位置" 与图片 格式 有关 !
gerry2000 2019-06-27
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903的回复:

{
  CWnd *pCtrl = GetDlgItem(IDC_PIC_CTRL);
  if(pCtrl && pCtrl->m_hWnd)
  {
    CDC *pDC = pCtrl->GetDC();
    if(pDC)
    {
      COLORREF cr = pDC->GetPixel(x, y);
      pCtrl->ReleaseDC(pDC);
    }
  }
}

多谢兄弟回复。我需要的不是这个位置的Rgb值。需要的是picture控件中位置对应图像的坐标位置(即这个图像的行列值,左上角看成(0,0))
zgl7903 2019-06-27
  • 打赏
  • 举报
回复

{
  CWnd *pCtrl = GetDlgItem(IDC_PIC_CTRL);
  if(pCtrl && pCtrl->m_hWnd)
  {
    CDC *pDC = pCtrl->GetDC();
    if(pDC)
    {
      COLORREF cr = pDC->GetPixel(x, y);
      pCtrl->ReleaseDC(pDC);
    }
  }
}

gerry2000 2019-06-27
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903的回复:
CDC 有 GetPixel函数 CDC::GetPixel
你说的这个函数是获取图片的像素值,我想获得的是Picture控件对应位置的图片像素位置。
gerry2000 2019-06-27
  • 打赏
  • 举报
回复
引用 10 楼 schlafenhamster的回复:
控件MoveWindow成图片大小 后 没有 比例 问题 了,但 图片中的 行列 位置 还是 与 图片 格式 有关
Icon,Bitmap; png ........
我用了一个最笨的办法,把picture控件改成和图片一样大小
schlafenhamster 2019-06-27
  • 打赏
  • 举报
回复
控件MoveWindow成图片大小 后 没有 比例 问题 了,但 图片中的 行列 位置 还是 与 图片 格式 有关
Icon,Bitmap; png ........
gerry2000 2019-06-27
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster的回复:
Move 图片 Window 为 图片 大小
控件MoveWindow成图片大小那?
zgl7903 2019-06-26
  • 打赏
  • 举报
回复
CDC 有 GetPixel函数 CDC::GetPixel
schlafenhamster 2019-06-26
  • 打赏
  • 举报
回复
Move 图片 Window 为 图片 大小
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧