我在对话框的一个区域rc做画图板,需要既可以在onmousemove里面绘制,也可以加载外部位图。现在都可以正常显示了,但是一旦被其他窗口遮盖或者最小化就没了。怎样用memdc(最好是vc2008自带的CMemDC)来实现无论是手绘还是加载外部图片都不会在窗口重绘的时候消失呢?
解决方案 »
- Command line error D2027 : cannot execute '.\c2'
- 郁闷,DLL为何不行?高手请看
- 请教一下 CWnd::Create的问题!
- 谁知道 DCOM 底层基于 TCP 通信的详细过程?
- MFC制作的控件注册时失败,提示内存分配失败,不知道什么原因?
- 小问题 大家来看看
- 那里有TCP/IP协议栈的源码下载呀?
- 我的.NET和VC是中文的,Visual Assist 不能用?那儿有 .NET和VC 改变为英文的系统文件?
- 如何得到本机浏览器将访问的ip地址?
- 如何在程序中捕获其他线程发出的事件,注意是线程
- CSring 读取
- 是不是每台电脑的Windows图片查看器的CLSID都相同?
然后在OnPaint()中的代码是将这个块内存的图片显示出来。
你用鼠标或Load图片只要将绘的和Load的图到那块内存去。
而那个绘图函数就放在OnPaint里被调用。
还有,你看不见与内存绘制没有任何关系!内存绘制是效率与闪烁的问题,我想你在这里可以不需要!
说了半天就是OnMouseMove里面鼠标的坐标并不是连续的,我没能想到记录的办法
载入图片肯定是用到内存DC,然后贴图就是了,比上面这个还简单一点。
首先你要明白,任何显示在界面上的东西,其背后都需要数据来支持的,点,线,面,图片,这些都存在相应数据结构中,而窗口显示是通过DC从这些数据结构中取出数据并依据相应的关系画在窗口的界面上(也称作窗口DC),OnPaint函数是用来重画的,也就是当前窗口被其它窗口覆盖时,你窗口上的东西将会被擦除,但此时被擦除窗口的WM_PAINT消息将会被触发,也就是OnPaint函数会被调用,而此时你又在OnPaint的函数中,通过提取存在程序中的数据进行重绘,被擦除的内容才能被重新显示出来!这就是图象显示的整个原理!不要以为图象被一次画到窗口上就永远存在了!