要求:vc中实现鼠标左键点击处绘制出一个圆并以圆心为起点画出一条水平线,鼠标左键点在直线上,按住鼠标左键可拖动直线旋转;如果不点在直线上,重新绘制圆位置和水平线。有程序代码,可以实现立即给分。谢谢
解决方案 »
- 求双目是标准图及其标准视差图
- 怎么在程序运行时动态创建sql数据库
- 关于静态文本框相互响应的问题
- 全局钩子钩到的数据存储进文件出错
- 问个菜鸟问题,如何初使化struct结构。
- 发现一巨好的C/C++/VC书下载好去处(免费!),不敢独享,与各位兄弟姐妹共享!!
- 怎样改变Edit的字体
- 窗口标题栏上放了一图片,在window任务栏上一点,原形就露出来了。
- 请问各位高手,有关向project中添加文件的问题,恳请指教万分感谢!!
- 对于 OnDrop为什么不响应?
- VC读文本文件的坐标数据进入结构体之后让数据显示在ActiveX控件中(如何提取x,y,z)
- 代码出现如下错误,DAMAGE:after normal block(#358) at 0x00b63fd0
1、做起来最简单,但是,刷新很闪,就是不停的画圆,画线,这种方法很少用!
2、用DC的XORP方式画图(好像是这种方式,具体楼主自己查),就是在拖动的过程中,先擦除上次画的,然后,再画新的!缺点是,控制不好就擦不干净!优点是速度快!
3、用贴图来画,必须双缓冲,这种画比较好,优点就是不闪,缺点是实现起来,特别是刚开始,挺累的!
OnDraw中直接直接拷贝背景DC过来就行了。这就是我的“单缓冲”动态拖动直线,拖动物件的时候,再添加一个备份DC用来保存拖动之前的背景图像,
在鼠标移动时,最好不要在内存背景DC上画图,这样做你的程序会非常慢。(要经过3次BitBlt),
应该是先用备份DC直接覆盖Cview,然后直接在Cview的DC上画图。
最后鼠标弹起时再把最终的图像画到内存背景DC上。
这个方法要处理一些细节问题,慢慢调试吧。微软的画图程序用的并不是这个方法,(我观察CPU得出结论的,微软的画图程序在画长斜直线时,CPU占用很高,而我的程序画长斜直线时CPU几乎没什么占用)
我估计它是在鼠标移动时,在内存背景DC上画的图,图像的拷贝做了脏矩形优化。