代码之家  ›  专栏  ›  技术社区  ›  Maciek Sawicki

检查矢量对象在给定dpi和打印大小的打印时是否可见

  •  0
  • Maciek Sawicki  · 技术社区  · 15 年前

    我有一个文件(*.shp用于GIS),其中包含多边形的集合,可能还有其他矢量对象(但多边形对我来说最重要)。我需要删除不可打印的对象。

    我不知道选择什么标准。我认为删除边界长度较小的对象比删除面积较小的对象要好(这样长的对象将减少为直线)。但也许有专门的算法?

    换句话说,我只想找到在给定缩放级别可见的对象。

    2 回复  |  直到 15 年前
        1
  •  1
  •   RED SOFT ADAIR    15 年前

    drawRect = myDevice.GetDrawRect();
    for(oneShape in allShapes)
    {
        shapeRect = oneShape.GetRect()
        if(! drawRect.Contains(shapeRect))
             oneShape.MarkAsInvisible(); 
        else
             oneShape.Draw();
    }
    

    Contains()函数看起来是这样的,假设y值从下到上递增:

    bool Rect::Contains(OtherRect)
    
    {
        if(left   <=  OtherRect.right  &&
           right  >=  OtherRect.left   &&
           top    >=  OtherRect.bottom &&
           bottom <=  OtherRect.top)
           return true
    
        return false;
    }
    
        2
  •  1
  •   Matthew Snape    15 年前