在对话框中添加一张图片,如何动态编辑图片(如放大和拖动)

在对话框中添加一张图片,怎么动态编辑图片(如放大和拖动)
底图是一个静态的图片
1、插入一个图片,弹出选择图片对话框,并加载图片

2.可以拖动图片周边的节点和边线进行图片框的大小设置,当大小变化时区域内的图片会作相应的拉伸;当鼠标点击图片框内部时可以对图片进行拖动。
要求:底图不变,框内的地图自动扩充如下图:


本人比较笨,而此任务要求在一个天内完成(11.30下午5点前)。采用VC6.0编写
哪位前辈懂的,麻烦给出详细思路和关键代码。不胜感激



------解决方案--------------------
关注中。
------解决方案--------------------
响应WM_PAINT消息,用CreateCompatibleDC创建内存DC,用SelectObject将位图选入DC,用StretchBlt把内存DC中的图象复制到窗口DC中,最后用DeleteDC删除内存DC。
------解决方案--------------------
楼主可以这样考虑:

在你的类中设定一个全局变量 CRect imgRect;

你绘图的时候都基于这个imgRect,剩下的就是怎么通过鼠标事件来改变这个imgRect的大小和位置了。

四个顶点可以分别在建立4个CRect PT[4];
通过这4个PT来定位你的四个鼠标热区。

在MouseDown事件中判断,鼠标点中的是PT里面的还是点在了ImgRect。使用的函数是CRect::PtInRect( CPoint point );

判断鼠标是否点中热区或拖动图片,需要4个热区标志和一个拖动标志 BOOL HT[4]; BOOL ST;

然后就是到鼠标移动事件里面判断是否为拖动(同样需要标志),如果是拖动;再判断是那中拖动,如果是四个点的热区拖动,那么就需要改动imgRect的
大小,(情况比较简单,正矩形,拖动一个点,很容易计算),如果是图片移动,那么只需要将imgRect移动即可。

鼠标抬起的时候记得要,给imgRect赋值,并清理所有标志。

最后呢,就是要使用这个imgRect完成贴图,把一个图片贴到制定的CRect应该很容易了;鼠标移动过程中要使用内存绘图,防止闪烁。

大致就是这些内容了。 这样的程序网上可能会有,自己做也不是很麻烦。楼主只要细心没问题的。
------解决方案--------------------
你可以考虑用CRectTracker(橡皮筋类)去试试
------解决方案--------------------
建议用CRectTracker 类

可以参考下面实现,直接在地图上面绘制一个CStatic,指定一个位图即可,实现了放大/缩小/拖动


A Multiple Selection based Control Tracker

http://www.codeproject.com/KB/miscctrl/controltracker.aspx