本来是想做手机地图,后来由于各种问题被耽搁了。
闲来无聊,向一个哥们要了几张地图图片-png格式,自己在手机上显示,想测试一下速度。如果以后还要做手机地图,那么
将读本地图片文件改成网络传输就OK了。
自编了一套显示原理,能用,感觉很无奈!
目前显示,放大,缩小,点击移动实现了。三天就OK了。
期间遇到了一些问题:
1.双缓冲。刚开始是获得一个图片,显示一个图片。在屏幕上是一块一块的显示。后来统一成一块显示。以下是一段代码
保存一下,省的以后再上网查。
// 获得一个临时画的DC
CDC* dc = GetDC();
m_BkBufMap.CreateCompatibleBitmap( dc, 512, 512); //w,h表示窗口的宽和高
m_BkBufDC.CreateCompatibleDC( dc );
m_BkBufDC.SelectObject(&m_BkBufMap);
// 清空背景
CRect rect;
GetClientRect(rect);
CBrush bkbrush( RGB( 255, 255, 255));
m_BkBufDC.FillRect(rect,&bkbrush);
for()
for()
{
CBitmap bitmap;
bitmap.Attach(SHLoadImageFile(strImageFilePath));
BITMAP bmpInfo;
bitmap.GetBitmap(&bmpInfo);
CDC bitmapDC;
bitmapDC.CreateCompatibleDC( dc );
CBitmap* pOldBitmap = bitmapDC.SelectObject(&bitmap);
m_BkBufDC.BitBlt(originalX, originalY, bmpInfo.bmWidth, bmpInfo.bmHeight, &bitmapDC, 0, 0, SRCCOPY);
bitmapDC.SelectObject(pOldBitmap);
bitmap.DeleteObject();
bitmapDC.DeleteDC();
}
// 绘制整个界面
dc->BitBlt( 0, 0, rect.right, rect.bottom, &m_BkBufDC, 0, 0, SRCCOPY);
双缓冲大概就这个流程。
目前正在研究移动的时候,如果移动范围还在这个DC上,怎么利用以前的这个DC(不用再读一遍文件)---至于为什么不保存
每个图片的 bitmap 自己想去吧。
将来要做的工作:
1.打点。
2.发位置短信。
3.POI查询相关。
4.绘图。
看来我真的很无聊。。。。。。。。。。。。。。。。。。。。。。。。。。
等做完这些,研究矢量的,研究网络传输的。 也很无聊。。。。。。。