当前我用已有的坐标绘制一个图形,
然后,要实现放大缩小功能,
怎么算放大或缩小后的坐标啊

解决方案 »

  1.   

    参考这个,乘以坐标乘以一个比例变换矩阵就可以,http://learn.gxtc.edu.cn/NCourse/jxcamcad/cadcam/Mains/main11-2.htm不过比例变换不仅改变大小,还移动图形位置,需要同时进行一次平移变换,保持图形的中心不变,
      

  2.   

    给你一个我原来用C++做的:void CRectangle::Draw(CDC *pDC, float Scale)
    {
    CBrush brush(color);
    CBrush* pOldBrush = pDC->SelectObject(&brush);
    pDC->Rectangle(m_begin.x*Scale, m_begin.y*Scale, 
    m_end.x*Scale, m_end.y*Scale
    );

    pDC->SelectObject(pOldBrush);
    }
      

  3.   

    Graphics本身自带的有放大/缩小,但是它是整体放大缩小,就是说线的宽度也会放大/缩小。
    如果想整体放大,但是线宽度不放大的话,可以参考上边的建议自己做。
      

  4.   

    这种方法不行啊,只是把坐标放大了,不合适,,
    -------------|
    |            |
    |    .P      |
    |            |
    |------------|  
    像这样的图形,以P为中心,放大N倍,只是乘以一个倍数就不行了,
      

  5.   

    [/Quote] 
    这种方法不行啊,只是把坐标放大了,不合适,, 
    -------------| 
    |            | 
    |    .P      | 
    |            | 
    |------------|     
    像这样的图形,以P为中心,放大N倍,只是乘以一个倍数就不行了,
      

  6.   


    假设你要绘制一个点(x:10,y:10),在考虑放大/缩小,偏移的情况下,伪代码如下:Point p = new Point(10,10);//点原始坐标
    double scale = 0.8;//放大缩小系数
    Point offset = new Point(0,0) //偏移量Point drawPoint = new Point(p.X * scale + offset.X,p.Y * scale + offset.Y);
    g.DrawPoint(drawPoint);
      

  7.   


    我做过好几年的矢量化绘图,GDI、GDI+,WPF都用过,不知道你说的不行是什么意思?讨论下
      

  8.   

    您在开发绘图软件时,缩放功能用的是如下方法么
    假设你要绘制一个点(x:10,y:10),在考虑放大/缩小,偏移的情况下,伪代码如下:Point p = new Point(10,10);//点原始坐标
    double scale = 0.8;//放大缩小系数
    Point offset = new Point(0,0) //偏移量Point drawPoint = new Point(p.X * scale + offset.X,p.Y * scale + offset.Y);
    g.DrawPoint(drawPoint);
      

  9.   

    你说的这个方法应该可行,反正不是简单的放大倍数,CAD的那个放大缩小怎么实现的
      

  10.   

    我的CSDN博客有相关缩放的文章,欢迎指点,纠正
      

  11.   


    我的CSDN博客有相关缩放的文章,欢迎指点,纠正