主线程:读取地图显示,并实现基本的放大,缩小和平移等功能。这一部分已经顺利完成。
辅助线程:利用别人编好的串口dll,得到位置信息,在地图上相应位置显示一副小图(例如一个小汽车的图片),因为有很多位置,所以需要显示好几个小图(就以3个为例吧),每副图上需要显示一个编号。我的问题是:
     (1)在辅助线程中画图,怎么才可以和主线程的画图(地图显示)不冲突,给个思路就行。例如,我的主线程画图是在ondraw()中实现的,那我的辅助线程中画图应该怎么实现?
     (2)把小汽车的图片画在屏幕的(x,y)位置,因为(x,y)是变化的,那我应该怎么让它动态的画在相应位置,这个刷屏怎么解决?
     (3)汽车显示后,我想让汽车的背景是透明的,就是说只显示汽车,而背景还是我的地图,这个应该怎么实现?
     (4)我要显示3个汽车,而我只用同一个汽车图片,那我怎么把汽车编号写在图片上,这个编号是和程序的某个变量关联的?(不要告诉我准备3副图片,因为可能程序写好后,要显示100个小汽车,那我不能准备100个吧)     谢谢大家,小弟跪谢!

解决方案 »

  1.   

    先建立一内存位图,建立过程简略
    OnDraw(CDC *pDC)
    {}
    //注意,原来,是通过在pDC->MoveTo....等来绘图,现在
    //改为mDC.MoveTo....
    //其中mDC是你的内存位图
    //最后pDC->BitBlt(..)
    就可以了
    对于你的汽车,可以用Xor笔
      

  2.   

    “不是用画位图的方法实现画图”:照样可以把位图取出来呀
    每次把背景和汽车都画在一副内存中新的位图上,就不需要擦除原图了
    “重画地图很费系统时间”你可以先把画好的地图保存下来,ondraw只要将位图和汽车
    合成新的位图显示出来即可。