QWT之QwtClipper 类

QwtClipper 类提供了一些裁剪算法,均为静态函数。因此QwtClipper 类实际上是一个静态工具类,是全局函数的一个替代方案。

Some clipping algos.

具体说来包括三个算法:

 
 
  1. class QWT_EXPORT QwtClipper  
  2. {  
  3. public:  
  4.     static QPolygon clipPolygon( const QRect &,   
  5.         const QPolygon &, bool closePolygon = false ); // 裁剪多边形(整型坐标)  
  6.     static QPolygonF clipPolygonF( const QRectF &,   
  7.         const QPolygonF &, bool closePolygon = false ); // 裁剪多边形(浮点数坐标)  
  8.     static QVector<QwtInterval> clipCircle(  
  9.         const QRectF &, const QPointF &, double radius ); // 裁剪圆  
  10. };  

代码分析:

1)在通常的编码中,我们可能习惯将这些算法定义为全局函数,而在面向对象的系统设计中,过多的全局函数会带来混乱和困惑。如果按照类别(例如这里的“裁剪”)将其分类定义为静态方法。除了能达到全局访问的目的外,还能有效的实现封装。实为良策!

2)实现代码示例:

 
 
  1. /*! 
  2.    Circle clipping 
  3.    clipCircle() devides a circle into intervals of angles representing arcs 
  4.    of the circle. When the circle is completely inside the clip rectangle 
  5.    an interval [0.0, 2 * M_PI] is returned. 
  6.    \param clipRect Clip rectangle 
  7.    \param center Center of the circle 
  8.    \param radius Radius of the circle 
  9.    \return Arcs of the circle 
  10. */  
  11. QVector<QwtInterval> QwtClipper::clipCircle( const QRectF &clipRect,  
  12.     const QPointF ¢er, double radius )  
  13. {  
  14.     QwtCircleClipper clipper( clipRect );  
  15.     return clipper.clipCircle( center, radius );  
  16. }  

QwtCircleClipper 类实现了“裁剪圆”算法的实际功能,但是其本身并未向外暴露,很好的实现了信息隐藏。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值