要绘制一个超大的矢量图象,如果从像素来算的话得有几十万像素,而且数据是多层的,定义一个超大的TBitmap肯定是不现实的。应该是只绘制显示的部分。但问题是如何进行裁剪呢?  如每一层都绘制在一个TBitmap中,然后在叠加,就存在一个如果透明的问题。  一般这种大图形绘制如何实现呢?

解决方案 »

  1.   

    几十万像素的超大矢量图像?套用一句广东话,“有没有搞错?”,才几十万像素。
    为何定义一个超大的bmp对象不现实?自己定义一个图像缓冲区不也得是那么大么?图像处理这玩意就是得要大内存,没啥办法。当然绘制只要绘制显示区域就可以了,这现在是比较普遍的方法,用位块传送把要显示的部分发送到绘图区域就行了,没什么难的。
    多层图像叠加这要看你是要什么叠加效果,是覆盖还是要进行逐像素颜色混合或者是alpha混合,位块传送函数提供一些混合效果,达不到要求的话只能自己混合了,我没自己写过,都是用的sdk提供的混合模式,这玩意弄不好的话就是非常耗时的操作。
      

  2.   

    可以参考下googlemap,据我观察,googlemap就是ls所说的那个样子,它的地图分成好多组,每一组都对应一个比例范围,每组地图又分成许多个小图,每个小图表示一个固定的地理范围,显示的时候先计算当前呈现的地图需要由哪一组的哪些小图来拼接,然后读取小图拼接显示,我用手机的googlemap观察,一般拼接的小图不会超过5、6个,所以也没有什么大图的问题。
    道路你那个图画的就不错啊,我也没发现googlemap的道路交汇做过特殊处理,就是交汇了,不太好表达我的意思。
      

  3.   

    将来要在上面显示很多的移动的点,googlemap的话速度不行,而且我们还要在上面做其它的开发.
    我现在就是想用DELPHI来开发.
      

  4.   

    大图处理就不要用GDI了,直接用D3D