SetWorldTransform这个函数不知能不能解决这个个问题,因为我知道这个函数解决图片的缩放等操作比较简单,知道大概的功能,但是具体使用也不太透彻。我要实现的功能是这样的:我要监控电流,并且绘出它的波形。用户可以放大和缩小这个波形。请问该如何实现呢?谢谢!!

解决方案 »

  1.   

    如果自己来编算法的话应该是那样的,但是我只是想纯粹的应用,只要能实现功能就行。
    有了一点头绪,用SetMapMode来进行缩放,这样自己就不用去写代码来实现了。
    等研究出来了再告诉你们。
      

  2.   

    感谢二位的关注主要就是运用SetMapMode()函数和SetWindowExEx()函数。下面是示例代码:void CTestView::OnDraw(CDC* pDC)
    {
         CTestDoc* pDoc = GetDocument();
         ASSERT_VALID(pDoc);
         //   TODO: add draw code for native data here     CRect rect;
         GetClientRect(&rect);
         pDC->SetMapMode(m_MapMode); 
         pDC->SetWindowExt(400,400); 
         pDC->SetViewportExt(rect.Width(),rect.Height());
         const float PI = 3.1415936f;     int x = 0;
         double y = 0;     pDC->MoveTo( 100, 100 );
         pDC->LineTo( 460, 100 );
         pDC->MoveTo( 100, 100 );     for( int i = 0; i <= 360; i++)
         {
             x = i + 100;
             y = sin( ( 2 * PI ) * i / 360 ) * 100 + 100;
             pDC->LineTo( x, ( int )y);
         }
    }其中SetWindowExEx()函数主要用来设置缩放的比例。
      

  3.   

    这里的m_MapMode是我定义的一个变量,直接换成MM_ISOTROPIC即可。
      

  4.   

    还行吧,就算10:1效果也还不错。
    但是这个方法我不太清楚如何比较准确地设置缩放比例。我机子上
    pDC->SetWindowExt(400,400); 
    这样出来的效果基本上等大,会有一点偏移。如果我想实现2倍或3倍放大这些只有该是多少?不知道SetWindowEx里的参数对应到屏幕的比例?有知道的吗?
      

  5.   

    映射模式是 MM_ISOTROPIC 的话,是按照twips作为度量单位的。1英寸=1440twips。
      

  6.   

    如果你的屏幕是72dpi,那就是:1英寸=72pixel。知道了这个,你算不出pixel和twips的关系???