主线程:读取地图显示,并实现基本的放大,缩小和平移等功能。这一部分已经顺利完成。
辅助线程:利用别人编好的串口dll,得到位置信息,在地图上相应位置显示一副小图(例如一个小汽车的图片),因为有很多位置,所以需要显示好几个小图(就以3个为例吧),每副图上需要显示一个编号。我的问题是:
(1)在辅助线程中画图,怎么才可以和主线程的画图(地图显示)不冲突,给个思路就行。例如,我的主线程画图是在ondraw()中实现的,那我的辅助线程中画图应该怎么实现?
(2)把小汽车的图片画在屏幕的(x,y)位置,因为(x,y)是变化的,那我应该怎么让它动态的画在相应位置,这个刷屏怎么解决?
(3)汽车显示后,我想让汽车的背景是透明的,就是说只显示汽车,而背景还是我的地图,这个应该怎么实现?
(4)我要显示3个汽车,而我只用同一个汽车图片,那我怎么把汽车编号写在图片上,这个编号是和程序的某个变量关联的?(不要告诉我准备3副图片,因为可能程序写好后,要显示100个小汽车,那我不能准备100个吧) 谢谢大家,小弟跪谢!
辅助线程:利用别人编好的串口dll,得到位置信息,在地图上相应位置显示一副小图(例如一个小汽车的图片),因为有很多位置,所以需要显示好几个小图(就以3个为例吧),每副图上需要显示一个编号。我的问题是:
(1)在辅助线程中画图,怎么才可以和主线程的画图(地图显示)不冲突,给个思路就行。例如,我的主线程画图是在ondraw()中实现的,那我的辅助线程中画图应该怎么实现?
(2)把小汽车的图片画在屏幕的(x,y)位置,因为(x,y)是变化的,那我应该怎么让它动态的画在相应位置,这个刷屏怎么解决?
(3)汽车显示后,我想让汽车的背景是透明的,就是说只显示汽车,而背景还是我的地图,这个应该怎么实现?
(4)我要显示3个汽车,而我只用同一个汽车图片,那我怎么把汽车编号写在图片上,这个编号是和程序的某个变量关联的?(不要告诉我准备3副图片,因为可能程序写好后,要显示100个小汽车,那我不能准备100个吧) 谢谢大家,小弟跪谢!
OnDraw(CDC *pDC)
{}
//注意,原来,是通过在pDC->MoveTo....等来绘图,现在
//改为mDC.MoveTo....
//其中mDC是你的内存位图
//最后pDC->BitBlt(..)
就可以了
对于你的汽车,可以用Xor笔
每次把背景和汽车都画在一副内存中新的位图上,就不需要擦除原图了
“重画地图很费系统时间”你可以先把画好的地图保存下来,ondraw只要将位图和汽车
合成新的位图显示出来即可。