如果我要用CDC在客户区画一个圆,很简单,用Ellipse这个函数就可以了。
但是我不是要用这种方法画圆,我想用点把这个圆给填充上去,因为圆中的每一个点的象素值都不相同,其实也有办法,
SetPixelV就可以了,我试过了,在我的电脑上,用大约4秒的时间就可以把整个圆给填完,我的CPU是奔四3.0,但是这个时间实在是太长了,因为某种原因,我必须在1秒钟之内把这个圆给填充完毕。不猜可能是因为CDC::SetpixelV本身的调用太费CPU了,所以时间满。我想到一个方法就是,把所以的点先存到内存的某一个区域,且把该点的值也存在内存里,用一个线程专门来读取这段内存中的RGB值,但是恐怕不能用CDC里的函数里,因为速度太慢。不知道有没有比较底层一点或者直接一点的光栅操作,我最近一段时间一直在想这个问题,可还是没有头绪。真心希望对GDI有研究的达人能祝一臂之力,只要说出大概的方向或方法就可以。
但是我不是要用这种方法画圆,我想用点把这个圆给填充上去,因为圆中的每一个点的象素值都不相同,其实也有办法,
SetPixelV就可以了,我试过了,在我的电脑上,用大约4秒的时间就可以把整个圆给填完,我的CPU是奔四3.0,但是这个时间实在是太长了,因为某种原因,我必须在1秒钟之内把这个圆给填充完毕。不猜可能是因为CDC::SetpixelV本身的调用太费CPU了,所以时间满。我想到一个方法就是,把所以的点先存到内存的某一个区域,且把该点的值也存在内存里,用一个线程专门来读取这段内存中的RGB值,但是恐怕不能用CDC里的函数里,因为速度太慢。不知道有没有比较底层一点或者直接一点的光栅操作,我最近一段时间一直在想这个问题,可还是没有头绪。真心希望对GDI有研究的达人能祝一臂之力,只要说出大概的方向或方法就可以。
解决方案 »
- 为何我主菜单的消息被一个视图接收了?
- 高手帮忙,如何用程序将选择题答案提取出来?
- Unhandled exception in ASClient.exe(MOUSEHOOK.DLL):0xc0000005:Access Violation
- dll 如何取得当前路径? dll 和 exe 不在同个目录下~
- 郁闷,不会vc
- 谁能帮帮我,下载了程序员第7期的编程扩展“记事本”功能一文的原代码,但在我的机器上无法运行?
- ===========遇到一个关于CScrollView的问题=================
- 送分的问题(不要笑话俺)
- 如何在对话框中显示JPEG图像?
- 如何让DaoRecordset对应多个表呢?
- 我要登录IIS的FTP服务器,用anonymous做用户名,登录不上..
- 请教:端口扫描器源码中的一个问题
感谢limanage和luoshayu,你么的方法绝对可行,只是我没说清楚,不可以一次贴上,要一个点一个点的贴上,一个象素一个象素的画。
如果有其他达人有好的方法,盼望赐教。