千万百万级别点绘制

  众所周知我们的输出设备的分辨率一般都是 1000*1000左右,也就是说输出设备做多能展现1百万个点像素,超出的像素将覆盖在已有像素上面。

  其实我们并不需要绘制那么多的点,我将超出的点可以不绘制,这里介绍一种简单的点绘制过滤方法,直接看代码:

    存储像素位置的map

       std::map<unsigned long long,bool> m_PointExist;

//这里使用64位长整型编码一个像素位置,前32为x,后32位y。

        unsigned long long a = (unsigned long long)((((unsigned long long)x)<<32) +y);

std::map<unsigned long long, bool>::iterator it = m_PointExist.find(a);
if (it != m_PointExist.end())
{
return false; //已经存在的像素点,可以不绘制
}
else

m_PointExist[a] = true; //记录

  //Draw


  其实目前信息点的几何分布还是在一定区域比较多,例如智慧城市中,信息点主要在大型城市中,周围区域信息可能没那么多,这就跟社会学科的二八定论一样,所以会造成在较小区域会有较多的信息点,所以在一定比例尺下中心区域显示的点会非常多,如果采用过滤绘制,将大大提高点的绘制效率,目前使用以上方法,并且将点绘制成Ellipse,每秒不低于10w的绘制速度完全没问题,实测还打到13w。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值