标尺对于图像处理程序,特别是需要精确测量的程序来说意义很大。这里进行了专门的研究。

基于现在已经引入的类和定义的变量,主要讲一讲如何调用。
1、添加放大缩小
void CGreenOpenPaintDoc::ScaleFactorZoomIn(void)
{
    if (m_fScaleFactor < ZOOM_MAX)
    {
        m_fScaleFactor = m_fScaleFactor*2;
    } 
}
 
 
void CGreenOpenPaintDoc::ScaleFactorZoomOut(void)
{
    if (m_fScaleFactor > ZOOM_MIN)
    {
        m_fScaleFactor = m_fScaleFactor /2;
    } 
}
2、在view中添加添加warpper 
void CGreenOpenPaintView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
    SetScrollSizes(MM_TEXT,
        CSize(int(m_pDoc->m_image.Width()*m_pDoc->m_fScaleFactor),
        int(m_pDoc->m_image.Height()*m_pDoc->m_fScaleFactor)));
    UpdateRulersInfo(RW_POSITION, GetScrollPosition());
    Invalidate();
}
 
void CGreenOpenPaintView::UpdateRulersInfo(int nMessage, CPoint ScrollPos, CPoint Pos)
{
    if (!m_pParent)
        return;
 
    CSize  m_ImageSize = CSize(m_pDoc->m_image.Width(),m_pDoc->m_image.Height());
    stRULER_INFO pRulerInfo;
    pRulerInfo.uMessage    = nMessage;
    pRulerInfo.ScrollPos   = ScrollPos;
    pRulerInfo.Pos         = Pos;
    pRulerInfo.DocSize     = m_ImageSize;
    pRulerInfo.fZoomFactor = m_pDoc  ->m_fScaleFactor;
    m_pParent->UpdateRulersInfo(pRulerInfo);
}
3、mainframe中添加warpper 
void CMainFrame::UpdateRulersInfo(stRULER_INFO stRulerInfo)
{
    m_Rulers.UpdateRulersInfo(stRulerInfo);
}
 
 
void CMainFrame::ShowRulers(bool bShow)
{
    m_Rulers.ShowRulers(bShow);
}
注意要把m_ruler添入
private:

CRulerSplitterWnd m_Rulers;

4、重写mainframe 的 oncreateclient事件
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext* pContext)
{
    if (!m_Rulers.CreateRulers(this, pContext)) {
        TRACE("rulers创建失败\n");
        return CFrameWnd::OnCreateClient(lpcs, pContext);
    }
    return TRUE;    
}
这个时候标尺出现,只不过由于没有指示量纲,所以没有画刻度
p.s 注意这个时候,一定要在view创建的时候进行scroll尺度的初始化,否则会assert错误
  CGreenOpenPaintView::CGreenOpenPaintView()
    : m_pParent(NULL)
    , m_pDoc(NULL)
{
    // TODO: 在此处添加构造代码
    CSize sizeTotal;
    sizeTotal.cx = sizeTotal.cy = 100;
    SetScrollSizes(MM_TEXT, sizeTotal);

}

 
当导入图片的时候,出现真实标尺。这里是按照厘米这个量纲进行计算的。

代码

http://files.cnblogs.com/files/jsxyhelu/GreenOpenPaint2.rar

最新文章

  1. ORM系列之三:Dapper
  2. Winform打砖块游戏制作step by step第6节---双缓冲应用
  3. Mysql 之旅开始啦
  4. python 实现登陆接口
  5. iOS-设计模式-懒加载
  6. 【shell】通配符
  7. oracle11g导入到10g
  8. (转)xml节点和元素的关系 .
  9. 通讯录--(iOS9独有的方法)
  10. led模组的优点和却点
  11. html5 兼容版本 video
  12. LeetCode算法题-Climbing Stairs(Java实现)
  13. DNS 协议
  14. Windows 增加远程连接数
  15. 廖雪峰Java4反射与泛型-1反射-4调用构造方法
  16. iOS7相机隐私判断
  17. 基于Hadoop开发网络云盘系统架构设计方案第一稿
  18. ubuntu安装中文输入法必看
  19. 9-eclispe中右键BuildPath没有了
  20. C语言文法翻译

热门文章

  1. [置顶] 数据库优化实践【MS SQL优化开篇】
  2. 【Android】Android实现自定义带文字和图片的Button
  3. C语言模拟ATM机界面
  4. eclipse/myeclipse 中的一些常用的快捷键
  5. Win10安装软件时出现2502、2503错误代码的问题
  6. Android N 通知概览及example
  7. Ubbeditor的使用
  8. Centos6与Centos7的区别
  9. mysql db imported into mongodb
  10. Python爬虫基础(三)urllib2库的高级使用